我们的 Web 应用程序基于金字塔框架中的 sqlalchemy,我们希望使用 alembic 来管理数据库迁移。Web 应用程序由在一个数据库上运行的各种包组成。因此,这意味着我们有多个需要迁移的 models.py。我对如何处理这个感到困惑。我可以在我的 env.py 中使用以下内容取得一些进展
from pkg_a.app.models import Base as pkg_a_base
from pkg_b.app.models import Base as pkg_b_base
from pkg_c.app.models import Base as pkg_c_base
def combine_metadata(*args):
m = MetaData()
for metadata in args:
for t in metadata.tables.values():
t.tometadata(m)
return m
target_metadata = combine_metadata(pkg_a_base, pkg_b_base, pkg_c_base)
Run Code Online (Sandbox Code Playgroud)
第一次效果很好。但是,如果我稍后再添加一个模型,仅将其添加到此列表中并没有多大作用。我期待着跑步
alembic revision -m "added a new model pkg_d.models" --version-path=migrations/versions --autogenerate
Run Code Online (Sandbox Code Playgroud)
将生成一个新版本文件,其中包含用于从 pkg_d.models 添加表的代码。但事实并非如此。我在这里做错了什么。