Форум сайта python.su
Небольшой идеологический вопрос начинающего по созданию и модификации таблиц. Правильно ли я понимаю, что sqlAlchemy сам генерит создает новые таблицы в базе данных?
Насколько я понял, это происходит в момент вызова: metadata.create_all(engine)
Более того, насколько я понял, sqlAlchemy достаточно интеллектуален, чтобы при изменении кода и последующем его запуске определить, что часть таблиц в базе уже создана, а часть еще нет и досоздает недостающие.
Однако, если я добавляю поле в определение:
product_table = Table('product', metadata,
Column('name', String(30), primary_key = True),
Column('category', String(30)),
Column('fat', Integer),
Column('protein', Integer),
Column('carbo', Integer)
)
то sqlAlchemy уже не догадывается сделать alter table add column.
По крайне мере у меня так. Это действительно так? В таких случаях необъодимо модифициоровать таблицу ручками?
Офлайн
да. Алхимия не содержит средства для автоматического изменения схемы данных.
Но есть довольно интересный проект sqlalchemy-migrate, предназначенный как раз для этого
Офлайн
> По крайне мере у меня так. Это действительно так? В таких случаях необъодимо модифициоровать таблицу ручкам
Это так. Я модифицирую ручками. Но голова, возвышающаяся над этими ручками, достаточно продуманная, что бы избежать таких манипуляций вообще или просто частых.
p.s. С первого взгляда, migrate не понравился.
..bw
Офлайн