Migration de base de données

VérifiéPrudence

Générer, examiner et appliquer en toute sécurité des migrations de base de données avec Alembic.

Spar Skills Guide Bot
DeveloppementIntermédiaire
24/07/2026
Claude CodeCursorCodexWindsurf
#alembic#database-migrations#sqlalchemy#schema-evolution#rollback-safety

Recommandé pour

Synthèse automatique

Génère, relit et applique des migrations Alembic en vérifiant que chaque migration est réversible et testée avant mise en production.

Points forts

  • Impose une relecture manuelle du fichier généré et signale ce que l'autogenerate rate (index partiels, contraintes personnalisées, changements d'enum)
  • Valide systématiquement le cycle upgrade / downgrade -1 / upgrade avant de lancer les tests
  • Fournit une procédure explicite de renommage de colonne en deux releases avec migration des données
  • Rappelle les précautions pour les grosses tables (>1M lignes) avec lock-timeout et stratégie offline

Limites

  • Suppose une stack Python/SQLAlchemy avec Alembic déjà configuré, aucune alternative n'est couverte
  • Ne traite pas les migrations de données complexes au-delà du principe add → migrate → remove
  • La détection du risque repose sur la lecture humaine de l'étape de review, sans outil d'analyse automatique du diff
Quand l'utiliser

À utiliser dès qu'un modèle de app/models/ change et qu'il faut produire une migration Alembic sûre et réversible.

Quand l'éviter

À éviter si le projet n'utilise pas Alembic ou s'il s'agit d'une modification de schéma purement manuelle sans modèle SQLAlchemy associé.

Analyse de sécurité

Prudence
Score qualité88/100

The skill guides database schema changes using powerful migration tooling. While it includes safety rules and review steps, the actual execution involves potentially destructive database operations and shell commands, warranting caution.

Points d'attention
  • •Instructs execution of Alembic migration commands which can modify or drop database schema/data.
  • •No allowed-tools declared, so the agent may run arbitrary shell commands like alembic and pytest.
  • •Downgrade/upgrade cycles can cause data loss if migrations are not reversible or are misapplied.
Comment cette analyse est faite

Exemples

Add a column with an index
I added a `last_login_at` column and an index on `users.email` in app/models/user.py — generate the Alembic migration, review it for anything autogenerate misses, and verify the downgrade works.
Rename a column safely
We want to rename `users.fullname` to `users.display_name`. Walk me through the two-release plan with Alembic migrations and the data migration step.
Drop a deprecated column
The `legacy_token` column on `sessions` is no longer referenced anywhere. Generate the migration to drop it, confirm the downgrade restores it, and run pytest after applying.

Skill: db-migration

Safely generates, reviews, and applies Alembic database migrations.

When to Use

  • Adding new tables or columns
  • Renaming columns (with a deprecation plan)
  • Adding indexes or constraints
  • Removing deprecated columns (after safe deprecation window)

Steps

  1. Understand the schema change

    • What model changed in app/models/?
    • Is this additive (safe) or destructive (risky)?
  2. Generate the migration

    alembic revision --autogenerate -m "description_of_change"
    
  3. Review the generated file (never skip this)

    • Check upgrade() matches what you intend
    • Check downgrade() is correct and reversible
    • Watch for: dropped columns, renamed columns, changed types
    • Autogenerate misses: partial indexes, custom constraints, enum changes
  4. Test the migration

    alembic upgrade head      # apply
    alembic downgrade -1      # verify rollback works
    alembic upgrade head      # re-apply
    
  5. Run tests after applying migration:

    pytest -x -v
    

Safety Rules

  • Never apply a migration that lacks a working downgrade()
  • Never drop a column that is still referenced in code
  • Rename columns in two releases: add new → migrate data → remove old
  • Large table migrations (>1M rows) need --lock-timeout and offline strategy

Output

Report: migration filename, what it does, whether downgrade was tested, any risks.

Du fichier au premier essai

Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.

Consulter la source et ses fichiers annexes

Ce téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.

1. Télécharger le fichier

Télécharger SKILL.md

Depuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/db-migration-mryiqfzq/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.

Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.

mkdir -p '.skill-downloads/db-migration-mryiqfzq' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/db-migration-mryiqfzq/download' --output '.skill-downloads/db-migration-mryiqfzq/SKILL.md.part' && mv '.skill-downloads/db-migration-mryiqfzq/SKILL.md.part' '.skill-downloads/db-migration-mryiqfzq/SKILL.md'

2. Vérifier les prérequis

Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.

Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.

Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.

3. Charger la skill

Le fichier ne fournit pas un en-tête name/description exploitable pour cette procédure native. Le téléchargement reste disponible pour lecture ; utilisez le mode manuel ci-dessous.

Mode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.

4. Faire un premier essai

Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :

Lis .skill-downloads/db-migration-mryiqfzq/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.

Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.

Skills similaires