我正在尝试使用alembic迁移来处理同一数据库的不同版本。一个例子是我有两个数据库,一个是实时的,一个是用于测试的。它们中的每一个都可能处于不同的迁移状态。首先,测试数据库可能根本不存在。
说live
有一个包含table1
和A
列的表B
。现在我想添加列C
。我将模型更改为包含C
,并生成具有以下代码的迁移脚本
op.add_column('table1', sa.Column('C', sa.String(), nullable=True))
这适用于现有的live
数据库。
如果我现在调用alembic upgrade head
引用不存在的test
数据库,则会收到(Operational Error) duplicate column name...
错误。我假设这是由于我的模型包含C
列,并且alembic / sqlalchemy会自动创建完整的表(如果它不存在)。
我应该简单地捕获错误还是有更好的方法来做到这一点?