FastAPI
Execution Workflow
- Configure
SQLAlchemyAsyncConfig and attach AdvancedAlchemy to the FastAPI app.
- Build request-scoped session dependencies with
Depends(alchemy.provide_session()).
- Provide services through async generators and
Service.new(session=...) context managers.
- Keep routers thin and return service-converted schema objects or paginated schema collections.
- Register routers only after the service and dependency layer is coherent.
Implementation Rules
- Use
Annotated plus Depends for session and service injection to keep signatures explicit.
- Set
commit_mode intentionally; do not rely on implicit transaction assumptions.
- Keep
response_model aligned with the schema returned by to_schema().
- Avoid passing ORM instances directly through FastAPI responses.
Example Pattern
from advanced_alchemy.extensions.fastapi import AdvancedAlchemy, AsyncSessionConfig, SQLAlchemyAsyncConfig
from fastapi import FastAPI
alchemy = AdvancedAlchemy(
config=SQLAlchemyAsyncConfig(
connection_string="sqlite+aiosqlite:///test.sqlite",
session_config=AsyncSessionConfig(expire_on_commit=False),
create_all=True,
commit_mode="autocommit",
),
app=FastAPI(),
)
Validation Checklist
- Confirm the session dependency is request-scoped and closes after each request.
- Confirm service providers yield the expected service type and release resources.
- Confirm response models match the schema conversion output.
- Confirm routers are mounted only once and startup or shutdown lifecycle is not duplicated.
Cross-Skill Handoffs
- Use
advanced-alchemy-routing for CRUD endpoint shape.
- Use
advanced-alchemy-services for service-backed FastAPI handlers.
- Use
advanced-alchemy-cli if the project needs Advanced Alchemy migration commands alongside the app.
Advanced Alchemy References