Alembic-sqlalchemy не обнаруживает существующие таблицы

Я задал вопрос (перегонный куб - SQLAlchemy начальная миграция) о том, как обнаружить таблицы с помощью

target_metadata = Base.metadata

на

alembic revision --autogenerate -m "initial migration"

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

def upgrade():
    ### commands auto generated by Alembic - please adjust! ###
    op.create_table('Brand',
    sa.Column('id', sa.Integer(), nullable=False),
    sa.Column('name', sa.String(), nullable=True),
    sa.Column('slug', sa.String(), nullable=True),
    sa.Column('date_created', sa.DateTime(), nullable=True),
    sa.Column('date_updated', sa.DateTime(), nullable=True),
    sa.PrimaryKeyConstraint('id'),
    schema='Products'
    )

def downgrade():
    ### commands auto generated by Alembic - please adjust! ###
    op.drop_table('ProductFile', schema='Products')

Я пробовал:

alembic stamp head

но после запуска этого и запуска команды autogenerate система генерирует все модели еще раз.

from project.apps.users.models import *
from project.apps.orders.models import *
from project.apps.products.models import *

from project.base import Base, metadata

# this is the Alembic Config object, which provides
# access to the values within the .ini file in use.
config = context.config

# Interpret the config file for Python logging.
# This line sets up loggers basically.
fileConfig(config.config_file_name)

# add your model's MetaData object here
# for 'autogenerate' support
# from myapp import mymodel
target_metadata = Base.metadata

как мне избежать этой проблемы?

Edit:

ENV.py:

https://gist.github.com/pypetey/bb65807ce773d8baeaf1

я сбросил БД и запустил миграцию

(env) D:projektytest>alembic revision --autogenerate
INFO  [alembic.migration] Context impl MSSQLImpl.
INFO  [alembic.migration] Will assume transactional DDL.
INFO  [alembic.autogenerate.compare] Detected added table u'Users.Country'
INFO  [alembic.autogenerate.compare] Detected added table u'Products.Brand'
INFO  [alembic.autogenerate.compare] Detected added table u'Users.User'
INFO  [alembic.autogenerate.compare] Detected added table u'Products.Product'
INFO  [alembic.autogenerate.compare] Detected added table u'Products.ProductFile
'
INFO  [alembic.autogenerate.compare] Detected added table u'Orders.Order'
INFO  [alembic.autogenerate.compare] Detected added table u'Products.Category'
INFO  [alembic.autogenerate.compare] Detected added table u'Products.Review'
INFO  [alembic.autogenerate.compare] Detected added table u'Users.UserAddress'
INFO  [alembic.autogenerate.compare] Detected added table u'Orders.OrderItem'
INFO  [alembic.autogenerate.compare] Detected added table u'Orders.OrderStatus'
Generating D:projektytestalembicversionsc6337c144a7_.py ... done

(env) D:projektytest>alembic upgrade head
INFO  [alembic.migration] Context impl MSSQLImpl.
INFO  [alembic.migration] Will assume transactional DDL.
INFO  [alembic.migration] Running upgrade None -> 1c6337c144a7, empty message

(env) D:projektytest>alembic revision --autogenerate
INFO  [alembic.migration] Context impl MSSQLImpl.
INFO  [alembic.migration] Will assume transactional DDL.
INFO  [alembic.autogenerate.compare] Detected added table u'Users.Country'
INFO  [alembic.autogenerate.compare] Detected added table u'Products.Brand'
INFO  [alembic.autogenerate.compare] Detected added table u'Users.User'
INFO  [alembic.autogenerate.compare] Detected added table u'Products.Product'
INFO  [alembic.autogenerate.compare] Detected added table u'Products.ProductFile
'
INFO  [alembic.autogenerate.compare] Detected added table u'Orders.Order'
INFO  [alembic.autogenerate.compare] Detected added table u'Products.Category'
INFO  [alembic.autogenerate.compare] Detected added table u'Products.Review'
INFO  [alembic.autogenerate.compare] Detected added table u'Users.UserAddress'
INFO  [alembic.autogenerate.compare] Detected added table u'Orders.OrderItem'
INFO  [alembic.autogenerate.compare] Detected added table u'Orders.OrderStatus'
Generating D:projektytestalembicversionsabb204549f_.py ... done

1 ответов


у меня была такая же проблема - я не знаю, влияет ли это на вас. Для меня проблема была вызвана тем, что схема, которую я использовал, не была по умолчанию - я думаю, что то же самое происходит для вас, поскольку вы используете схему "продукты". Я разместил вопрос по адресу:

https://bitbucket.org/zzzeek/alembic/issue/281/autogenerate-fails-to-detect-existing

и с небольшим количеством руководства, удалось решить проблему, установив include_schemas=True в обоих run_migrations_* функции в alembic/env.py модуль.

посмотреть docs:

Если True, autogenerate будет сканировать все схемы, расположенные С SQLAlchemy get_schema_names () метод, и включает все различия в таблицы, найденные на всех этих схемах. При использовании этой опции, вы можете хотите также использовать EnvironmentContext.конфигурировать.include_object опция для указания вызываемого объекта, который может фильтровать таблиц/схем, вам включен.