Support async natif

SQLAlchemy 2.0 stabilise le support async via AsyncSession et create_async_engine. Combiné à asyncpg ou aiosqlite, cela permet d'utiliser SQLAlchemy dans des applications FastAPI ou asyncio sans bloquer la boucle événementielle.

Exemple avec asyncpg

python
from sqlalchemy.ext.asyncio import (
    AsyncSession, create_async_engine, async_sessionmaker
)
from sqlalchemy import select

engine = create_async_engine(
    'postgresql+asyncpg://user:pass@localhost/db'
)
async_session = async_sessionmaker(engine, class_=AsyncSession)

async def get_users():
    async with async_session() as session:
        stmt = select(User).where(User.active == True)
        result = await session.execute(stmt)
        return result.scalars().all()

# Utilisable dans FastAPI :
# @app.get('/users')
# async def users():
#     return await get_users()

Sources