基于数据库引擎的Alembic条件

时间:2019-01-24 20:07:49

标签: python migration alembic

Alembic是否可以根据数据库类型运行稍微不同的迁移代码?例如,仅在MySQL上运行ALTER TABLE object AUTO_INCREMENT = 6000;,但对于SQLite跳过此操作?

某些背景:我们正在使用Alembic来运行迁移。在许多开发人员设置中,我们使用sqlite,在生产中我们使用mysql。在生产中,我们希望以某个特定的值启动一些主键,但是在使用sqlite的开发人员设置中,这是不可能的并且不是必需的,因此我们可以跳过此步骤。

1 个答案:

答案 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")