Alembic условно на основе движка базы данных - PullRequest
0 голосов
/ 24 января 2019

Может ли alembic запускать немного другой код миграции в зависимости от типа базы данных?Например, запускать ALTER TABLE object AUTO_INCREMENT = 6000; только на MySQL, но пропустить это для SQLite?

Некоторые сведения: мы используем alembic для запуска миграций.На многих установках dev мы используем sqlite, а на производстве мы используем mysql.На производстве мы хотим запустить некоторые первичные ключи с определенным значением, но на установках разработчика с использованием sqlite это невозможно и не нужно, поэтому мы можем пропустить этот шаг.

1 Ответ

0 голосов
/ 25 января 2019

Возможно получить название двигателя из привязки.Я добавил следующее в мою миграцию:

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")
...