【发布时间】:2015-09-20 16:40:26
【问题描述】:
我正在使用 Alembic 管理数据库的迁移。多个 Python 包使用同一个数据库,每个包都有自己的迁移路径。
如何告诉 Alembic 在生成自动迁移时忽略其他包中的表?例如当我运行时:
alembic -c development.ini revision --autogenerate -m "Initial migration"
我的迁移 Python 文件包含其他包的放置表(不在当前的 Alembic env.py 中):
def upgrade():
### commands auto generated by Alembic - please adjust! ###
op.drop_table('table_from_another_package`)
我可以手动编辑迁移文件并删除 drop_table() 和 create_table() 条目,但这是手动容易出错的工作。我宁愿一开始就避免生成它们。
【问题讨论】:
-
好问题,虽然可能不是一个让多个产品访问同一个数据库的好设计。你至少使用不同的模式吗?还是一些命名约定?我不认为这是开箱即用的支持,但如果我需要让它工作,我可能会查看反映数据库的代码(
Metadata或Engine)并找到覆盖它的方法以便它过滤掉 no my tables。
标签: sqlalchemy alembic