小编Pan*_*Lal的帖子

使用 alembic 处理多个 models.py

我们的 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 添加表的代码。但事实并非如此。我在这里做错了什么。

sqlalchemy pyramid alembic

5
推荐指数
1
解决办法
1151
查看次数

标签 统计

alembic ×1

pyramid ×1

sqlalchemy ×1