Как создать автоматически сгенерированный файл из последней ревизии в Alembic

Я следую этому уроку... и первоначальная автоматическая генерация идеальна... он в основном создает файл миграции с методами апгрейда и понижения.

скажем так, это номер версии файла миграции: 3e96cf22770b.. все мои заявления об обновлении выглядят так:

def upgrade():
    ### commands auto generated by Alembic - please adjust! ###
    op.create_table('hashtag',
                    sa.Column('id', sa.VARCHAR(), autoincrement=False, nullable=False),
                    sa.Column('text', sa.VARCHAR(), autoincrement=False, nullable=True),
                    sa.PrimaryKeyConstraint('id', name=u'hashtag_pkey')
                    )

и мое заявление о понижении рейтинга выглядит следующим образом:

def downgrade():
    ### commands auto generated by Alembic - please adjust! ###
    op.drop_table('user_access_token')

Теперь я сделал простую модификацию моего файла models.py, вот как он выглядит в git:

-    verificationCode = Column(String())
+    isVerified = Column(Boolean())

Дело в том, что я понятия не имею, как запустить оператор автогенерации, который на самом деле просто дает мне файл дельта- миграции... т.е. я просто хочу файл миграции, который заменяет один столбец другим...

я попытался установить текущую версию 3e96cf22770b затем работает

python migrate.py db revision --autogenerate

но затем он продолжает создавать дубликаты исходного файла миграции (то есть переносить всю схему базы данных), а не только дельта.. идеи?

2 ответа

Alembic автоматически генерирует скрипт миграции (используя --autogenerate флаг), наблюдая текущую схему БД (она фактически соединяет БД и выбирает схему) и новую модель (в вашем коде Python). Поэтому, когда вы хотите создать новый сценарий миграции, убедитесь, что ваша база данных находится в предыдущей схеме (3e96cf22770b в твоем случае).

Не уверен, как вы пытались установить текущую схему, но вы можете проверить схему в alembic_version таблица в вашей БД.

Вы должны быть в состоянии запустить:

python migrate.py db migrate

и это должно создать новый файл миграции для вас. Как только вы получите, что вы можете запустить:

python migrate.py db upgrade 

и это обновит вашу базу данных. Перед обновлением базы данных посмотрите файл миграции и посмотрите, выполняет ли он то, что вы хотите.

Другие вопросы по тегам