Alembic:自动生成迁移时如何忽略其他产品的数据库表

时间:2015-07-03 00:18:29

标签: sqlalchemy alembic

我正在使用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()条目,但这是手动错误操作。我宁愿避免在第一时间生成它们。

1 个答案:

答案 0 :(得分:9)

完全控制自动生成的对象是here

如果您尝试以这样的方式运行自动生成,即它一次只考虑单个MetaData对象,您可能希望在env.py文件中添加利用"X" argument的自定义。使用此参数来接收您要处理的子组件,并在include_object函数中查阅该组件以仅查看与该子组件相关的对象。