Alembic是否可以根据数据库类型运行稍微不同的迁移代码?例如,仅在MySQL上运行ALTER TABLE object AUTO_INCREMENT = 6000;
,但对于SQLite跳过此操作?
某些背景:我们正在使用Alembic来运行迁移。在许多开发人员设置中,我们使用sqlite,在生产中我们使用mysql。在生产中,我们希望以某个特定的值启动一些主键,但是在使用sqlite的开发人员设置中,这是不可能的并且不是必需的,因此我们可以跳过此步骤。
答案 0 :(得分:0)
可以从绑定中获取引擎名称。我在迁移中添加了以下内容:
def upgrade():
# create table call
bind = op.get_bind()
if bind.engine.name == 'mysql':
op.execute("ALTER TABLE object AUTO_INCREMENT = 5000")
else:
print("Skipping setting initial ID value")