Migration 1.4 vers 2.0

SQLAlchemy 2.0, publié en janvier 2023, adopte un nouveau style d'exécution unifié. Les requêtes passent de session.query() à session.execute(select(...)). La version 1.4 servait de pont de migration avec les deux styles supportés.

Avant / Après

python
from sqlalchemy import select, create_engine
from sqlalchemy.orm import Session, DeclarativeBase, Mapped, mapped_column

class Base(DeclarativeBase):
    pass

class User(Base):
    __tablename__ = 'users'
    id: Mapped[int] = mapped_column(primary_key=True)
    name: Mapped[str]

# SQLAlchemy 1.x : session.query(User).filter_by(name='Alice').first()

# SQLAlchemy 2.0 :
engine = create_engine('sqlite:///db.sqlite3')
with Session(engine) as session:
    stmt = select(User).where(User.name == 'Alice')
    user = session.execute(stmt).scalar_one_or_none()
    print(user)

Sources