-m "create db"
сгенерировалась миграция, в ней я вижу создание моих таблиц, с колонками, все как положено. Но смущает меня вот что: "op.create_table..." находится в методе downgrade(), а в методе upgrade() лежит "op.drop_table...". Это почему же?
Изменения в базе должны делаться только миграциями. Если исходные таблицы ты забабахал руками, то получится такая вот фигня.
ну мне же как-то надо начать создавать БД. Я удалил полностью БД. Очистил все миграции. 1. Запустил alembic revision --autogenerate -m "init" получил первую миграцию в которой все пусто (uprade и downgrade) 2. Сделал alembic upgrade head 3. запустил скрипт (из приложения) который создал все таблички. 4. Сделал alembic revision --autogenerate -m "create db" и на выходе получил ерунду описанную выше. Где я ошибся?
не должно быть все пусто в первой миграции.
https://t.me/advice17/21
так БД нет же. Или самую первую миграцию делать на уже созданных таблицах?
> 3. запустил скрипт (из приложения) который создал все таблички. скрипт не должен создавать все таблички. миграции должны создавать все таблицы.
нет, на пустой базе данных у тебя из моделей должна быть сгенерирована первая миграция, которая будет включать в себя все твои модели.
Все правильно, БД нет (БД пустая), модели есть. Следовательно таблицы нужно создать.
Я не пойму логику :( Ок, зайдем с другой стороны. У меня есть созданная БД (с таблицами, полями, ключами). И есть настроенный alembic пока без единой миграции (в папке version пусто, таблицы alembic_version не существует). Могу я стартануть с этого этапа, что бы первой миграцией создавалась БД?
покажи алембику пустую БД
Технически — можешь. Но миграцию придётся писать руками. Автоматика не в курсе, в чём твой коварный план. Ну либо менее травматично — создать и накатить все миграции на пустой базе и добиться совпадения структуры. Но этим есть хоть какой-то смысл страдать только если проект уже во всю работает база с данными и внезапно решили перейти на миграции. На пустом проекте это бессмысленная трата времени.
Все! понял! Спасибо всем за помощь! @cutwater
А как раньше её создавали? А что дальше планировалось делать? А как создавались другие инстансы бд? А будут ли они добавляться?
Обсуждают сегодня