Технологии, которые я использую:
- Python 3,6
- postgres 10,4
- колба
- flask_migrate
- flask_sqlalchemy
До сих пор я полагался на автоматически сгенерированные сценарии миграции, которые возникают в результате вызова python app.py db migrate
.Затем я применяю эти сценарии миграции, вызывая python app.py db upgrade
.Однако мое последнее изменение связано с изменением Enum, который я использовал для создания столбца.Вот упрощенный пример моего перечисления:
class EventType(Enum):
started = 1
completed = 2
aborted = 2
(обратите внимание на опечатку с повторным значением 2.) Вот то, что я пытаюсь изменить Enum на:
class EventType(Enum):
started = 1
completed = 2
aborted = 3
failed = 4
Мои изменения должны были исправить опечатку и добавить новое значение к перечислению.
Вот (упрощенная) модель, которая использует это перечисление:
class Event(db.Model):
id = db.Column(db.Integer, primary_key=True)
type = db.Column(db.Enum(EventType))
Вызовpython app.py db migrate
не обнаружил никаких изменений, и я прочитал в документации, что alembic
(который используется под капотом в flask_migrate
) не обнаруживает автоматически изменения перечисления. 1
Этот вопрос от ~ 6 лет назад, кажется, указывает, что есть лучший способ решить эту проблему после Postgres 9.4
Я ищудля конкретных шагов мне нужно либо написать свой собственный скрипт миграции вручную, либо получить flask_migrate
, чтобы обнаружить это изменение и сгенерировать скрипт для меня.Пожалуйста, дайте мне знать, если мне нужно предоставить дополнительную информацию, чтобы помочь с ответом на этот вопрос.