Flask#
Flask extension providing request-scoped session management, automatic transaction handling, and async adapter support via the portal pattern.
Configuration#
Use sqlspec.config.FlaskConfig in extension_config["flask"].
These settings apply across adapters; no adapter-specific subtype is needed.
- class sqlspec.config.FlaskConfig[source]
Bases:
TypedDictConfiguration options for Flask SQLSpec extension.
All fields are optional with sensible defaults. Use in extension_config["flask"]:
- connection_key: NotRequired[str]
auto-generated from session_key.
- Type:
Key for storing connection in Flask g object. Default
- session_key: NotRequired[str]
'db_session'.
- Type:
Key for accessing session via plugin.get_session(). Default
- commit_mode: NotRequired[Literal['manual', 'autocommit', 'autocommit_include_redirect']]
'manual'. - manual: No automatic commits, user handles explicitly - autocommit: Commits on 2xx status, rollback otherwise - autocommit_include_redirect: Commits on 2xx-3xx status, rollback otherwise
- Type:
Transaction commit mode. Default
- extra_commit_statuses: NotRequired[set[int]]
None.
- Type:
Additional HTTP status codes that trigger commit. Default
- extra_rollback_statuses: NotRequired[set[int]]
None.
- Type:
Additional HTTP status codes that trigger rollback. Default
- disable_di: NotRequired[bool]
False. When True, the Flask extension will not register request hooks for managing database connections and sessions. Users are responsible for managing the database lifecycle manually via their own DI solution.
- Type:
Disable built-in dependency injection. Default
- enable_sqlcommenter_middleware: NotRequired[bool]
True. When the driver's
StatementConfighasenable_sqlcommenter=True, request attributes are populated automatically. Set toFalseto explicitly disable this behavior.- Type:
Control automatic SQLCommenter context population. Default
Plugin#
- class sqlspec.extensions.flask.SQLSpecPlugin[source]#
Bases:
objectFlask extension for SQLSpec database integration.
Provides request-scoped session management, automatic transaction handling, and async adapter support via portal pattern.
- init_app(app)[source]#
Initialize Flask application with SQLSpec.
Validates configuration, creates portal if needed, creates pools, and registers hooks.
- Parameters:
- Raises:
ImproperConfigurationError -- If extension already registered or keys not unique.
- Return type:
- get_session(key=None)[source]#
Get or create database session for current request.
Sessions are cached per request for consistency.
State#
- class sqlspec.extensions.flask.FlaskConfigState[source]#
Bases:
objectInternal state for each database configuration in Flask extension.
Holds configuration, state keys, commit settings, and transaction logic.
- should_rollback(status_code)[source]#
Determine if HTTP status code should trigger rollback.
In autocommit modes, anything that doesn't commit should rollback.
- __init__(config, connection_key, session_key, commit_mode, extra_commit_statuses, extra_rollback_statuses, is_async, disable_di, enable_correlation_middleware=False, correlation_header='x-request-id', correlation_headers=None, auto_trace_headers=True, enable_sqlcommenter_middleware=True)#