flask migrate 如何跟踪哪个修订 ID 是最新的?

How does flask migrate track which revision ID is current?

我一直错误地使用 Flask-Migrate。在两个环境之间,我独立创建了 migrations 文件夹,并将 migrations 文件夹添加到 .gitignore 文件中。

这最近引起了问题,因为我想直接与 Alembic 迁移交互,并跟踪 github 中的那些变化。

这意味着我已经分叉了我的生产烧瓶应用程序,现在跟踪迁移文件夹,删除它在我的 .gitignore 文件中的条目。我把这个 b运行ch 拉到我的本地并销毁了我的本地数据库。我 运行 跟踪迁移,它似乎有效。

我想知道在两个环境之间,flask migrate 如何跟踪当前的修订 ID 是什么?假设我在本地创建和 运行 两个迁移,并推送迁移文件夹。当我 运行 db upgrade on production 时,Flask migrate 如何跟踪这两个修订,以及 运行 这些在 Production 上的修订?

Alembic(Flask-Migrate 背后的引擎)将在您的名为 alembic_version 的数据库中插入一点 table。它在这个 table 中写入数据库的当前修订版。这是我的一个数据库中此 table 的转储:

mydb=# select * from alembic_version;
 version_num
--------------
 36e0d1f0d589
(1 row)

当您 运行 升级时,它会通过阅读此 table 的当前修订版来知道从哪里开始升级。

问得好!