Added the menu category delete route. Fix: Show blank vouchers in tables Fix: In rare cases, the old settements can stick around. fixed it.
20 lines
750 B
Markdown
20 lines
750 B
Markdown
---
|
|
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.
|