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