Flask

Flask extension providing request-scoped session management, automatic transaction handling, and async adapter support via the portal pattern.

Plugin

class sqlspec.extensions.flask.SQLSpecPlugin[source]

Bases: object

Flask extension for SQLSpec database integration.

Provides request-scoped session management, automatic transaction handling, and async adapter support via portal pattern.

__init__(sqlspec, app=None)[source]

Initialize Flask extension with SQLSpec instance.

Parameters:
  • sqlspec (SQLSpec) -- SQLSpec instance with registered configs.

  • app (Flask | None) -- Optional Flask application to initialize immediately.

init_app(app)[source]

Initialize Flask application with SQLSpec.

Validates configuration, creates portal if needed, creates pools, and registers hooks.

Parameters:

app (Flask) -- Flask application to initialize.

Raises:

ImproperConfigurationError -- If extension already registered or keys not unique.

Return type:

None

get_session(key=None)[source]

Get or create database session for current request.

Sessions are cached per request for consistency.

Parameters:

key (str | None) -- Session key for multi-database configs. Defaults to first config if None.

Return type:

Any

Returns:

Database session (driver instance).

get_connection(key=None)[source]

Get database connection for current request.

Parameters:

key (str | None) -- Session key for multi-database configs. Defaults to first config if None.

Return type:

Any

Returns:

Raw database connection.

shutdown()[source]

Dispose connection pools and stop async portal.

Return type:

None

State

class sqlspec.extensions.flask.FlaskConfigState[source]

Bases: object

Internal state for each database configuration in Flask extension.

Holds configuration, state keys, commit settings, and transaction logic.

__post_init__()[source]

Validate status configuration.

Return type:

None

should_commit(status_code)[source]

Determine if HTTP status code should trigger commit.

Parameters:

status_code (int) -- HTTP response status code.

Return type:

bool

Returns:

True if status should trigger commit, False otherwise.

should_rollback(status_code)[source]

Determine if HTTP status code should trigger rollback.

In autocommit modes, anything that doesn't commit should rollback.

Parameters:

status_code (int) -- HTTP response status code.

Return type:

bool

Returns:

True if status should trigger rollback, False otherwise.

__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)