4 votes

flask-migrate fait des migrations par ordre alphabétique

Utilisation de flask-migrate y flask-script j'ai mis en place mon projet, de sorte que je n'ai qu'à faire

python manage.py db migrate

Dans le dossier des migrations, j'obtiens des fichiers tels que

0f46602752b7_.py
8fdf8259859b_.py

Il n'y a aucune garantie que la première migration précède la seconde. Django corrige ce problème en préfixant toutes les migrations avec un numéro qui s'incrémente automatiquement. Pouvons-nous dire à flask-migrate / alembic de faire la même chose ?

Idéalement, les deux fichiers dans l'exemple ci-dessus seraient

001_8fdf8259859b_.py
002_0f46602752b7_.py

10voto

maslak Points 643

Si vous vérifiez chaque fichier de migration, vous découvrirez des lignes telles que :

revision = '09364330399c'
down_revision = None

down_revision représente la migration précédente. Si vous voulez vraiment changer la convention de dénomination, vous pouvez le faire en ajoutant file_template à votre alembic.ini

Suivre les docs :

file_template - il s'agit du schéma de nommage utilisé pour générer de nouveaux > fichiers de migration. La valeur présente est la valeur par défaut, elle est donc commentée. Les jetons disponibles incluent :

   %%(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.

Pour votre exemple particulier, ajoutez la ligne suivante à l'intérieur de l'appareil alembic.ini

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

Il générera un nom de fichier tel que

20190527_122029_de2c595ec169_hello_world.py

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X