首页 > 解决方案 > flask-migrate 按字母顺序进行迁移

问题描述

使用flask-migrateand flask-script,我设置了我的项目,这样我只需要做

python manage.py db migrate

在迁移文件夹中,我得到诸如

0f46602752b7_.py
8fdf8259859b_.py

不能保证第一次迁移先于第二次迁移。Django 通过在所有迁移前加上一个自动递增的数字来解决这个问题。我们可以告诉 flask-migrate / alembic 做同样的事情吗?

理想情况下,上例中的两个文件是

001_8fdf8259859b_.py
002_0f46602752b7_.py

标签: pythonflaskflask-sqlalchemyalembic

解决方案


如果您检查每个迁移文件,您会发现以下行:

revision = '09364330399c'
down_revision = None

down_revision代表前面的迁移。如果您真的想更改命名约定,可以通过向file_template您的alembic.ini

以下文档:

file_template - 这是用于生成新迁移 > 文件的命名方案。存在的值是默认值,因此被注释掉。可用的代币包括:

   %%(rev)s - revision id

   %%(slug)s - a truncated string derived from the revision message

   %%(year)d, %%(month).2d, %%(day).2d, %%(hour).2d, %%(minute).2d, %%(second).2d - components of the create date, by default datetime.datetime.now() unless the timezone configuration option is also used.

对于您的特定示例,请在其中添加以下行alembic.ini

file_template = %%(year)d%%(month).2d%%(day).2d_%%(hour).2d%%(minute).2d%%(second).2d_%%(rev)s_%%(slug)s

它将生成一个文件名,例如

20190527_122029_de2c595ec169_hello_world.py

推荐阅读