Почему sqlalchemy не изменяет базу данных при добавлении / удалении столбца? - PullRequest
0 голосов
/ 09 февраля 2011

Если я запускаю свой скрипт на python, он правильно создает таблицы.

Однако, если я добавлю / удалю столбец и снова выполню скрипт, он не изменит базу данных.

Почему это?

Я делаю это после определения всего:

mapper(Product, products)
mapper(Category, categories)

metadata.create_all(engine)

session = Session()

Ответы [ 2 ]

4 голосов
/ 09 февраля 2011

create_all только создает.Это не меняет.http://www.sqlalchemy.org/docs/core/schema.html?highlight=create_all#sqlalchemy.schema.MetaData.create_all

Если вы изменили столбцы, вам нужно либо удалить / прочитать таблицу, либо добавить столбец вне сценария вручную.Для этого есть инструменты, такие как sqlalchemy-migrate, который является полноценным менеджером миграции для вашего проекта.http://code.google.com/p/sqlalchemy-migrate/

0 голосов
/ 09 февраля 2011

Я использую SQLAlchemy в Flask, но я думаю, что те же понятия применимы и здесь. Вы должны зафиксировать изменения при изменении чего-либо в базе данных:

session.commit()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...