我正在使用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()
条目,但这是手动错误操作。我宁愿避免在第一时间生成它们。
答案 0 :(得分:9)
完全控制自动生成的对象是here。
如果您尝试以这样的方式运行自动生成,即它一次只考虑单个MetaData对象,您可能希望在env.py文件中添加利用"X" argument的自定义。使用此参数来接收您要处理的子组件,并在include_object
函数中查阅该组件以仅查看与该子组件相关的对象。