Alembic 几个模块到单个数据库

Alembic few modules to single database

我们需要构建一个拆分为多个模块的大型应用程序,

App
  - Module1    --> AppDb
  - Module2    --> AppDb
  - Module3    --> AppDb

每个模块,我们都想添加 alembic 版本,所有模块都连接到单个数据库。但是我们不能添加修订,因为它与其他模块的修订冲突(因为所有版本存储在相同的 table alembic_version,所以迁移相互冲突)。

如果您在每个 Module1Module2Module3 中使用单独的简单迁移,每个迁移都有自己的 env.py(或类似),则解决方案可以是使用 context.configureversion_table 参数,它允许您覆盖版本 table.

的名称

即将 env.py 修改为

context.configure(
    connection=connection,
    target_metadata=target_metadata,
    version_table='alembic_module1_version'
)