Flask
Execution Workflow
-
Choose SQLAlchemySyncConfig by default, or SQLAlchemyAsyncConfig only when Flask async routes are intentional and supported.
-
Initialize AdvancedAlchemy with the app and use its session helpers rather than global engine state.
-
Use bind_key only when the application truly needs multiple databases.
-
Wrap CRUD-heavy services with FlaskServiceMixin when its jsonify() helper meaningfully simplifies responses.
-
Use flask database commands once migrations are wired through the extension.
Implementation Rules
-
Keep commit_mode explicit: manual , autocommit , or autocommit_include_redirect .
-
Prefer request or app-context-managed sessions over module-level state.
-
Translate Flask query params into Advanced Alchemy filters near the route boundary.
-
Use async sessions in sync routes only with care; that path is documented as experimental.
Example Pattern
from advanced_alchemy.extensions.flask import AdvancedAlchemy, SQLAlchemySyncConfig from flask import Flask
app = Flask(name) alchemy = AdvancedAlchemy( SQLAlchemySyncConfig(connection_string="sqlite:///local.db", commit_mode="autocommit"), app, )
Validation Checklist
-
Confirm sessions are opened inside request or app context and closed cleanly.
-
Confirm the chosen commit mode matches endpoint behavior, including redirects if relevant.
-
Confirm flask database --help exposes migration commands when expected.
-
Confirm FlaskServiceMixin.jsonify() returns the intended serialization format.
Cross-Skill Handoffs
-
Use advanced-alchemy-repositories and advanced-alchemy-services for the persistence layer itself.
-
Use advanced-alchemy-cli for migration command semantics behind Flask CLI wrappers.
-
Use advanced-alchemy-database-seeding for fixture loading during app initialization or admin workflows.
Advanced Alchemy References