Мой вопрос
Я пытаюсь использовать функцию автоматического создания Alembic и думаю, что что-то упустил.
Я инициализировал alembic на моей модели. Теперь я добавил и удалил несколько столбцов из SomeTable
в моем models.py
. Когда я запускаю alembic revision --autogenerate -m "Some message"
, полученный файл версии автоматически не имеет ничего в upgrade()
и downgrade()
методах .
Я разместил свой код ниже здесь. Когда я запускаю код, я получаю следующий вывод:
MetaData(bind=None)
Это заставляет меня думать, что я неправильно устанавливаю target_data. Что вы думаете, я делаю не так?
Мой код
Я получил это более или менее здесь (и в других местах): https://stackoverflow.com/a/35643534/11163122
from path.config import build_db_url
from path.models import (
Base,
SomeTable # Note: SomeTable inherits from Base, which is a declarative_base
)
URL = build_db_url()
# this is the Alembic Config object, which provides
# access to the values within the .ini file in use.
config = context.config
# add your model's MetaData object here
# for 'autogenerate' support
# from myapp import mymodel
# target_metadata = mymodel.Base.metadata
target_metadata = Base.metadata
def run_migrations_online():
"""Run migrations in 'online' mode.
In this scenario we need to create an Engine
and associate a connection with the context.
"""
connectable = engine_from_config(
config.get_section(config.config_ini_section),
url=URL,
prefix="sqlalchemy.",
poolclass=pool.NullPool
)
with connectable.connect() as connection:
context.configure(
connection=connection,
target_metadata=target_metadata,
compare_server_default=True
)
with context.begin_transaction():
context.run_migrations()
print(target_metadata)
run_migrations_online()
За здесь: