Как подавить миграцию в Алембик? - PullRequest
1 голос
/ 21 октября 2019

Любой, кто работал над старой кодовой базой, знаком с этой проблемой: количество миграций в вашей папке версий выходит из-под контроля. База данных, используемая вашим приложением сегодня, совсем не похожа на базу данных, с которой она была запущена. Или, может быть, более часто встречаются миграции, которые могут работать для немедленного обновления, но каким-то образом они лишают возможности откатывать / воспроизводить миграции от начала до конца. В обоих случаях было бы неплохо раздавить миграции, чтобы имитировать начало с нуля.

Я пытался найти полный пример того, как подавить миграции для приложений Flask с использованием SQLalchemy и Alembic. Самое близкое, что я нашел, это https://alembic.sqlalchemy.org/en/latest/cookbook.html:

# inside of a "create the database" script, first create
# tables:
my_metadata.create_all(engine)

# then, load the Alembic configuration and generate the
# version table, "stamping" it with the most recent rev:
from alembic.config import Config
from alembic import command
alembic_cfg = Config("/path/to/yourapp/alembic.ini")
command.stamp(alembic_cfg, "head")

Однако это краткое объяснение не объясняет источник my_metadata, и мне неясно, что должен содержать alembic.ini в порядкечтобы завершить эту задачу. Кто-нибудь знает полный пример этой задачи?

1 Ответ

0 голосов
/ 29 октября 2019

my_metadata из примера - это просто ссылка на вашу базу из декларативного API (https://docs.sqlalchemy.org/en/13/orm/extensions/declarative/api.html)

Импорт примера:

from yourapplication.models import Base

my_metadata = Base.metadata

Все модели в вашей базе данных доступны через ее метаданные, если у вас есть все модели, импортированные туда, где вы храните свою базу. После этого следуйте руководству по кулинарной книге, и оно должно работать ™

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