2016-05-07 3 views
1

Я новичок в Flask и Flask-Migrate. При запуске python manage.py db migrate -m "explanation" любое изменение, которое я сделал для models.py, автоматически применяется к базе данных (в этом случае добавление столбца в некоторую таблицу).колпачок автоматически меняет базу данных

Я думал, что изменения должны были применяться только после запуска python manage.py db upgrade?

Кроме того, в приведенном выше примере файл миграции содержит две функции: upgrade и downgrade. Однако они оба пустые ... Разве они не должны включать изменения, которые я хотел применить к базе данных?

Я прочитал документацию и, похоже, противоречит тому, что на самом деле происходит. Заранее спасибо за помощь!

ответ

2

Не так, как Flask-Migrate работ. Команда migrate обнаруживает и генерирует изменения схемы, записывая ее в файл с кодом описания миграции с помощью функций upgrade и downgrade.

База данных изменена с помощью команды python manage.py db upgrade.

Я подозреваю, что у вас есть что-то, отбрасывающее вашу базу данных и воссоздающее ее при запуске команды migrate. Что-то вроде:

db.drop_all() 
db.create_all() 

Это будет воссоздать базу данных, вероятно, до Flask-Migrate способен анализировать схему.

+0

Я думаю, что это было, спасибо за помощь. У вас есть хороший ресурс, который вы рекомендуете, чтобы узнать больше о библиотеке? Я не могу найти хороший учебник/сообщение об этом. Кажется, что есть несколько перекосов в SQLAlchemy - например, он не обнаруживает некоторые небольшие изменения типа столбца. Я хотел бы узнать, как проверить скрипт обновления и отредактировать его по мере необходимости ... – JMS

+1

Да, 'Flask-Migrate' - всего лишь небольшая обертка' alembic'. Прочтите 'alembic' docs, чтобы понять, как это работает. http://alembic.readthedocs.io/en/latest/ – iurisilvio

Смежные вопросы