Il SQL toolkit di Python
SQLAlchemy, creato da Mike Bayer nel 2006, è il principale SQL toolkit e ORM per Python. Ha tre livelli:
- Core — espressioni SQL builder (query builder agnostico)
- ORM — mapping classi-tabelle, unit of work, identity map
- Engine — connection pooling, driver abstraction
Licenza MIT. Compatibile con PostgreSQL, MySQL, MariaDB, SQLite, Oracle, MSSQL, e decine di altri database via driver.
SQLAlchemy 2.0 — gennaio 2023
SQLAlchemy 2.0, rilasciato il 26 gennaio 2023 dopo anni di lavoro, è una major release con cambiamenti strutturali:
API 2.0-style unificata
Precedentemente l’ORM e il Core avevano API divergenti. La 2.0 unifica: Select di Core e query ORM usano la stessa sintassi basata su select(), coerente su tutto.
# Legacy 1.x style
result = session.query(User).filter_by(name='Anna').all()
# 2.0 style (raccomandato)
stmt = select(User).where(User.name == 'Anna')
result = session.execute(stmt).scalars().all()
Typing completo
SQLAlchemy 2.0 dichiara le relazioni con type hints moderni (PEP 484+):
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
class Base(DeclarativeBase): pass
class User(Base):
__tablename__ = 'users'
id: Mapped[int] = mapped_column(primary_key=True)
name: Mapped[str]
email: Mapped[str | None]
Query tipizzate, migliore supporto mypy/pyright.
Async support
async with AsyncSession(engine) as session:
result = await session.execute(select(User))
users = result.scalars().all()
Async nativo (da 1.4, consolidato 2.0) per uso con FastAPI, Starlette, asyncio.
Uso
SQLAlchemy è usato in:
- Flask + Flask-SQLAlchemy come pattern standard
- FastAPI + SQLAlchemy + Alembic (migrations)
- SQLModel (Sebastián Ramírez) — alto-livello su Pydantic + SQLAlchemy
- Celery — persistenza risultati
- Airflow — metadata DB
Alembic (migrations)
Alembic, stesso autore, è il migration tool per SQLAlchemy. Genera migration script Python da differenze tra models e schema DB. Standard per evoluzione schema in applicazioni Python.
Nel contesto italiano
SQLAlchemy è in praticamente ogni applicazione Python production-grade italiana, dalle PMI alle grandi aziende.
Riferimenti: SQLAlchemy 2.0 (26 gennaio 2023). Mike Bayer. Licenza MIT. Core + ORM + Engine. Alembic per migrations. Async support (1.4+). Type hints (PEP 484).
