0Pricing
FastAPI Backend Development Bootcamp · Leçon

Migrations de base de données avec Alembic

Faites évoluer votre schéma SQLAlchemy en toute sécurité au fil du temps avec Alembic : initialisez les migrations, générez automatiquement les révisions et appliquez ou annulez les modifications dans un projet FastAPI.

Migrations de base de données avec Alembic est une leçon FastAPI Backend Development Bootcamp gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage FastAPI Backend Development Bootcamp, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours FastAPI Backend Development Bootcamp comprend 4 leçons au total.

Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.

Why Migrations

Your database schema changes as your app grows: new columns, tables, and indexes. Migrations are versioned, repeatable scripts that evolve the schema without losing data. Alembic is the standard tool for SQLAlchemy.

create_all Is Not Enough

Base.metadata.create_all() creates missing tables but never alters existing ones. It cannot add a column to a populated table or track history. Production needs real migrations.

Installing and Initializing

Install Alembic and scaffold its folder. This creates an alembic/ directory and alembic.ini.

pip install alembic
alembic init alembic

Pointing Alembic at Your Models

In alembic/env.py, set target_metadata to your SQLAlchemy Base.metadata so autogenerate can compare models to the live schema.

from app.database import Base
from app import models  # ensure models are imported

target_metadata = Base.metadata

Setting the Database URL

Configure the connection string. Reading it from an env var keeps secrets out of source control.

import os
config.set_main_option('sqlalchemy.url', os.environ['DATABASE_URL'])

Autogenerating a Revision

Alembic compares your models to the database and writes a migration script with the differences.

alembic revision --autogenerate -m 'add email to users'

Anatomy of a Migration

Each script has upgrade() and downgrade(). Upgrade applies the change; downgrade reverses it. Always review autogenerated code before running it.

def upgrade():
    op.add_column('users', sa.Column('email', sa.String(), nullable=True))

def downgrade():
    op.drop_column('users', 'email')

Applying Migrations

Run upgrade head to apply all pending migrations up to the latest revision.

alembic upgrade head

Rolling Back

Step back one revision with downgrade -1, or to a specific revision id. Rollbacks are why writing accurate downgrade() matters.

alembic downgrade -1

Revision Chain Mental Model

Migrations form a linked list: each revision records its down_revision. Alembic walks the chain to know what to apply. Here is the idea in plain Python.

revisions = [
    {'id': 'a1', 'down': None},
    {'id': 'b2', 'down': 'a1'},
    {'id': 'c3', 'down': 'b2'},
]
order = []
cur = 'c3'
by_id = {r['id']: r for r in revisions}
while cur:
    order.append(cur)
    cur = by_id[cur]['down']
print(list(reversed(order)))

Migration Best Practices

Keep migrations safe:

  • Review autogenerated scripts; they miss some changes (e.g. column renames).
  • Run migrations in CI/CD before deploying code.
  • Make additive changes first, remove old columns in a later release.
  • Never edit an already-applied migration; create a new one.

Quick Check

Why is Base.metadata.create_all() insufficient for evolving a production schema?

Recap

You added safe schema evolution:

  • Initialized Alembic and wired it to your models and DB URL.
  • Autogenerated revisions with upgrade() / downgrade().
  • Applied with upgrade head and reverted with downgrade.
  • Followed best practices for reviewing and sequencing migrations.

Questions Fréquemment Posées

La leçon « Migrations de base de données avec Alembic » est-elle gratuite ?

Oui — le texte complet de « Migrations de base de données avec Alembic » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours FastAPI Backend Development Bootcamp, passe à CoddyKit PRO. Le cours FastAPI Backend Development Bootcamp comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Migrations de base de données avec Alembic » ?

Faites évoluer votre schéma SQLAlchemy en toute sécurité au fil du temps avec Alembic : initialisez les migrations, générez automatiquement les révisions et appliquez ou annulez les modifications dan… Tu pratiques FastAPI Backend Development Bootcamp avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer FastAPI Backend Development Bootcamp ?

Aucune expérience préalable n'est requise. FastAPI Backend Development Bootcamp sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Migrations de base de données avec Alembic » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon FastAPI Backend Development Bootcamp ?

Oui. Chaque leçon FastAPI Backend Development Bootcamp inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Fondamentaux de l’ORM SQLAlchemy
  2. Connecter FastAPI à PostgreSQL
  3. Opérations CRUD avec SQLAlchemy
  4. Migrations de base de données avec Alembic
← Retour à FastAPI Backend Development Bootcamp