Make Alembic détecte les changements de type de colonne et modifie la longueur des champs de chaîne de caractères
La détection automatique ne détecte pas les changements de type de colonne par défaut. Vous devez l'activer en éditant le fichier alembic/env.py.

Par défaut, Alembic ne change pas la longueur des champs de chaîne de caractères, j'ai remarqué ceci après avoir changé un champ de chaîne de caractères de :
description = Column(String(150), server_default='')
à :
description = Column(String(250), server_default='')
Aucun changement n'a été apporté.
Il semble que la détection de changement de type de colonne est désactivée par défaut, vous pouvez donc la tester en premier, et vous pouvez l'activer en ajoutant'compare_type=True' au contexte.
Editez le fichier alambic/env.py et ajoutez'compare_type=True' à deux endroits :
def run_migrations_offline():
...
context.configure(
url=url, target_metadata=target_metadata, literal_binds=True,
compare_type=True # <--- here
)
...
def run_migrations_online():
...
with connectable.connect() as connection:
context.configure(
connection=connection,
target_metadata=target_metadata,
compare_type=True # <--- here
)
...
Maintenant, les changements de type de colonne seront détectés et correctement migrés.
Liens / crédits
Alembic - migration for String length change
https://eshlox.net/2017/08/06/alembic-migration-for-string-length-change
Auto Generating Migrations
https://alembic.sqlalchemy.org/en/latest/autogenerate.html#what-does-autogenerate-detect-and-what-does-it-not-detect
En savoir plus...
Alembic SQLAlchemy
Récent
- PostgreSQL backup avec Docker SDK pour Python
- Empêcher l'envoi de messages en double à un système distant
- Politician Translator avec Spacy et Negate
- Du code monolithique aux services avec RabbitMQ et Pika
- Application Flask montrant stdout et stderr d'un travail en arrière-plan
- Agrégation et journaux de conteneurs Q4_6513_TNEMECALPER_4 Docker utilisant le SDK Docker pour Python
Les plus consultés
- Flask RESTful API validation des paramètres de la requête avec les schémas Marshmallow
- Utilisation des Python's pyOpenSSL pour vérifier les certificats SSL téléchargés d'un hôte
- Utiliser UUIDs au lieu de Integer Autoincrement Primary Keys avec SQLAlchemy et MariaDb
- Utiliser PyInstaller et Cython pour créer un exécutable Python
- Connexion à un service sur un hôte Docker à partir d'un conteneur Docker
- SQLAlchemy : Utilisation de Cascade Deletes pour supprimer des objets connexes