Vue d'ensemble

SQLAlchemy 1.4, publié le 16 mars 2021, est une version de transition vers le style 2.0. Le mode future permet d'adopter progressivement la nouvelle API.

Fonctionnalités principales

Mode future (style 2.0)

Le paramètre future=True sur le moteur et la session active le style 2.0 : les requêtes utilisent select() au lieu de session.query(), offrant une API plus explicite et cohérente.

python
from sqlalchemy import create_engine, select
from sqlalchemy.orm import Session
from models import Utilisateur

# Mode future pour le style 2.0
engine = create_engine('sqlite:///app.db', future=True)

with Session(engine) as session:
    # Style 2.0 : select() explicite
    stmt = select(Utilisateur).where(Utilisateur.age > 18)
    resultats = session.execute(stmt).scalars().all()
    for u in resultats:
        print(f'{u.nom} ({u.age} ans)')

Requêtes style 2.0

Les requêtes style 2.0 unifient Core et ORM autour de select(), insert(), update() et delete(). Les résultats sont retournés via session.execute() au lieu de session.query().

python
from sqlalchemy import select, func

# Agrégation avec le style 2.0
stmt = (
    select(Utilisateur.ville, func.count())
    .group_by(Utilisateur.ville)
    .having(func.count() > 5)
)
for ville, nb in session.execute(stmt):
    print(f'{ville} : {nb} utilisateurs')

Sources