--- name: sqlalchemy-async description: Writes SQLAlchemy 2.0 async database queries using Psycopg3. Use whenever interacting with the PostgreSQL database. --- # SQLAlchemy 2.0 Async Standards ## Model Definitions - ALWAYS use SQLAlchemy 2.0 Declarative Base with `Mapped` and `mapped_column`. - Example: `id: Mapped[int] = mapped_column(primary_key=True)` - NEVER use the old `Column(Integer, primary_key=True)` syntax. ## Querying - NEVER use `session.query()`. This is legacy 1.x syntax. - ALWAYS use `sqlalchemy.select()` combined with `await session.execute(stmt)`. - Extract results using `.scalars().all()` or `.scalar_one_or_none()`. ## Session Management - Use `sqlalchemy.ext.asyncio.AsyncSession`. - Ensure all database I/O is awaited.