Sanic

Sanic extension providing app/request context integration, request-scoped session management, transaction handling, correlation IDs, SQLCommenter, and connection pool lifecycle management.

Plugin

class sqlspec.extensions.sanic.SQLSpecPlugin[source]

Bases: object

SQLSpec integration for Sanic applications.

Provides Sanic-native configuration parsing and request helper methods. Runtime listener and middleware behavior is registered by init_app.

Example

from sanic import Sanic from sqlspec import SQLSpec from sqlspec.adapters.asyncpg import AsyncpgConfig from sqlspec.extensions.sanic import SQLSpecPlugin

sqlspec = SQLSpec() sqlspec.add_config(

AsyncpgConfig(

connection_config={"dsn": "postgresql://localhost/mydb"}, extension_config={

"sanic": {

"commit_mode": "autocommit", "session_key": "db",

}

},

)

)

app = Sanic("app") db_ext = SQLSpecPlugin(sqlspec, app)

__init__(sqlspec, app=None)[source]

Initialize SQLSpec Sanic extension.

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

  • app (Optional[Sanic[typing.Any, typing.Any]]) -- Optional Sanic application to initialize immediately.

init_app(app)[source]

Initialize Sanic application with SQLSpec.

Parameters:

app (Sanic[typing.Any, typing.Any]) -- Sanic application instance.

Return type:

None

get_session(request, key=None)[source]

Get or create database session for request.

Parameters:
  • request (Any) -- Sanic request instance.

  • key (str | None) -- Optional session key to retrieve a specific database session.

Return type:

Any

Returns:

Database session driver instance.

get_connection(request, key=None)[source]

Get database connection from request context.

Parameters:
  • request (Any) -- Sanic request instance.

  • key (str | None) -- Optional session key to retrieve a specific database connection.

Return type:

Any

Returns:

Database connection object.

State

class sqlspec.extensions.sanic.SanicConfigState[source]

Bases: object

Internal state for a Sanic database configuration.

Tracks the keys and behavior needed to bind one SQLSpec config into a Sanic app and its request context.

__post_init__()[source]

Validate status configuration.

Return type:

None

__init__(config, connection_key, pool_key, session_key, commit_mode, extra_commit_statuses, extra_rollback_statuses, disable_di, enable_correlation_middleware=False, correlation_header='x-request-id', correlation_headers=None, auto_trace_headers=True, enable_sqlcommenter_middleware=True, sqlcommenter_framework='sanic')

Helpers

sqlspec.extensions.sanic.get_connection_from_request(request, config_state)[source]

Get database connection from request context.

Parameters:
  • request (Any) -- Sanic request instance.

  • config_state (SanicConfigState) -- Configuration state for the database.

Return type:

Any

Returns:

Database connection object.

Raises:

ImproperConfigurationError -- If SQLSpec request middleware has not stored a connection.

sqlspec.extensions.sanic.get_or_create_session(request, config_state)[source]

Get or create database session for request.

Sessions are cached per request to return the same session instance across multiple calls in one request.

Parameters:
  • request (Any) -- Sanic request instance.

  • config_state (SanicConfigState) -- Configuration state for the database.

Return type:

Any

Returns:

Database session driver instance.