склянка-мигрант делает миграции в алфавитном порядке - PullRequest
1 голос
/ 25 мая 2019

Используя flask-migrate и flask-script, я настраиваю свой проект так, что мне нужно только сделать

python manage.py db migrate

Внутри папки миграций я получаю такие файлы, как

0f46602752b7_.py
8fdf8259859b_.py

Нет гарантии, что первая миграция предшествует второй. Django исправляет эту проблему, добавляя префикс ко всем миграциям с автоматически увеличивающимся числом. Можем ли мы сказать колбу-переносить / alembic так же?

В идеале, два файла в приведенном выше примере будут

001_8fdf8259859b_.py
002_0f46602752b7_.py

1 Ответ

2 голосов
/ 25 мая 2019

Если вы проверите каждый файл миграции, вы обнаружите такие строки, как:

revision = '09364330399c'
down_revision = None

down_revision означает предыдущую миграцию.Если вы действительно хотите изменить соглашение о присвоении имен, вы можете сделать это, добавив поле file_template к своему alembic.ini

в следующих документах:

file_template - это схема именования, используемая длягенерировать новые миграции> файлы.Значение по умолчанию является значением по умолчанию, поэтому оно закомментировано.Доступные токены включают в себя:

   %%(rev)s - revision id

   %%(slug)s - a truncated string derived from the revision message

   %%(year)d, %%(month).2d, %%(day).2d, %%(hour).2d, %%(minute).2d, %%(second).2d - components of the create date, by default datetime.datetime.now() unless the timezone configuration option is also used.

Для вашего конкретного примера добавьте следующую строку внутрь alembic.ini

file_template = %%(year)d%%(month).2d%%(day).2d_%%(hour).2d%%(minute).2d%%(second).2d_%%(rev)s_%%(slug)s

. Будет сгенерировано имя файла, например

* 1021.*
...