Flask-migrate:如何管理其他已安装模块的数据库

Flask-migrate : How do I manage db of other installed modules

我正在对现有项目设置 Flask-migrate。我的项目也使用了 Taskflow (https://github.com/openstack/taskflow) 模块。

Taskflow 建立自己的表。所有这一切,同时我一直指向任务流使用与应用程序相同的数据库,并创建自己的 3 个表。现在启用迁移后,我收到此错误

无法找到由“397d0bf4d081”标识的修订版

[这是在我升级任务流后端连接时发生的——如果这有任何意义的话]

我不清楚应该如何设置迁移来管理项目中安装的 packages/modules 的表。

当我写这个问题时,我想到了将模块指向它自己的数据库。

我试过了,很管用。问题归结为什么是正确的方法——是否应该通过将已安装模块的数据库要求指向单独的数据库来管理它(看起来是正确的做法)。

问题是 taskflow 使用 Alembic 来跟踪它自己的数据库迁移,因此您的 Alembic 历史记录(通过 Flask-Migrate)与 Taskflow 的历史记录冲突。

您有两个选择:

  • 最简单的方法是使用单独的数据库,正如您所做的那样。
  • 如果你想使用相同的数据库,那么你必须做两件事:首先,在你的项目中使用 Alembic 的 include_object 选项来配置你的迁移以忽略 tables由 Taskflow 维护,其次,将 Alembic 版本 table 名称配置为与我假设 Taskflow 使用的 alembic_version 默认值不同的名称。