API¶
Plugin¶
- class sqlspec.extensions.litestar.SQLSpecPlugin[source]
Bases:
InitPluginProtocol,CLIPluginLitestar plugin for SQLSpec database integration.
Automatically configures NumPy array serialization when NumPy is installed, enabling seamless bidirectional conversion between NumPy arrays and JSON for vector embedding workflows.
- Session Table Migrations:
The Litestar extension includes migrations for creating session storage tables. To include these migrations in your database migration workflow, add ‘litestar’ to the include_extensions list in your migration configuration.
Example
- config = AsyncpgConfig(
connection_config={“dsn”: “postgresql://localhost/db”}, extension_config={
- “litestar”: {
“session_table”: “custom_sessions” # Optional custom table name
}
}, migration_config={
“script_location”: “migrations”, “include_extensions”: [“litestar”], # Simple string list only
}
)
The session table migration will automatically use the appropriate column types for your database dialect (JSONB for PostgreSQL, JSON for MySQL, TEXT for SQLite).
Extension migrations use the ext_litestar_ prefix (e.g., ext_litestar_0001) to prevent version conflicts with application migrations.
- __init__(sqlspec, *, loader=None)[source]
Initialize SQLSpec plugin.
- property config: list[SyncDatabaseConfig[TypeAliasForwardRef('typing.Any'), TypeAliasForwardRef('typing.Any'), TypeAliasForwardRef('typing.Any')] | NoPoolSyncConfig[TypeAliasForwardRef('typing.Any'), TypeAliasForwardRef('typing.Any')] | AsyncDatabaseConfig[TypeAliasForwardRef('typing.Any'), TypeAliasForwardRef('typing.Any'), TypeAliasForwardRef('typing.Any')] | NoPoolAsyncConfig[TypeAliasForwardRef('typing.Any'), TypeAliasForwardRef('typing.Any')]]
Return the plugin configurations.
- Returns:
List of database configurations.
- on_cli_init(cli)[source]
Configure CLI commands for SQLSpec database operations.
- on_app_init(app_config)[source]
Configure Litestar application with SQLSpec database integration.
Automatically registers NumPy array serialization when NumPy is installed.
- get_annotations()[source]
Return the list of annotations.
- get_annotation(key)[source]
Return the annotation for the given configuration.
- Parameters:
key¶ (
Union[str,SyncDatabaseConfig[typing.Any, typing.Any, typing.Any],NoPoolSyncConfig[typing.Any, typing.Any],AsyncDatabaseConfig[typing.Any, typing.Any, typing.Any],NoPoolAsyncConfig[typing.Any, typing.Any],type[Union[SyncDatabaseConfig[typing.Any, typing.Any, typing.Any],NoPoolSyncConfig[typing.Any, typing.Any],AsyncDatabaseConfig[typing.Any, typing.Any, typing.Any],NoPoolAsyncConfig[typing.Any, typing.Any]]]]) – The configuration instance or key to lookup.- Raises:
KeyError – If no configuration is found for the given key.
- Return type:
type[Union[SyncDatabaseConfig[typing.Any, typing.Any, typing.Any],NoPoolSyncConfig[typing.Any, typing.Any],AsyncDatabaseConfig[typing.Any, typing.Any, typing.Any],NoPoolAsyncConfig[typing.Any, typing.Any]]]- Returns:
The annotation for the configuration.
- get_config(name)[source]
Get a configuration instance by name.
- provide_request_session(key, state, scope)[source]
Provide a database session for the specified configuration key from request scope.
This method requires the connection to already exist in scope (e.g., from DI injection). For on-demand connection creation, use
provide_request_session_syncorprovide_request_session_asyncinstead.- Parameters:
key¶ (
Union[str,SyncDatabaseConfig[typing.Any, typing.Any, typing.Any],NoPoolSyncConfig[typing.Any, typing.Any],AsyncDatabaseConfig[typing.Any, typing.Any, typing.Any],NoPoolAsyncConfig[typing.Any, typing.Any],type[Union[SyncDatabaseConfig[typing.Any, typing.Any, typing.Any],NoPoolSyncConfig[typing.Any, typing.Any],AsyncDatabaseConfig[typing.Any, typing.Any, typing.Any],NoPoolAsyncConfig[typing.Any, typing.Any]]]]) – The configuration identifier (same as get_config).scope¶ (
Union[HTTPScope,WebSocketScope]) – The ASGI scope containing the request context.
- Return type:
- Returns:
A driver session instance for the specified database configuration.
- provide_request_session_sync(key, state, scope)[source]
Provide a sync database session for the specified configuration key from request scope.
If no connection exists in scope, one will be created from the pool and stored in scope for reuse. The connection will be cleaned up by the before_send handler.
For async configurations, use
provide_request_session_asyncinstead.
- async provide_request_session_async(key, state, scope)[source]
Provide an async database session for the specified configuration key from request scope.
If no connection exists in scope, one will be created from the pool and stored in scope for reuse. The connection will be cleaned up by the before_send handler.
For sync configurations, use
provide_request_sessioninstead.
- provide_request_connection(key, state, scope)[source]
Provide a database connection for the specified configuration key from request scope.
This method requires the connection to already exist in scope (e.g., from DI injection). For on-demand connection creation, use
provide_request_connection_syncorprovide_request_connection_asyncinstead.- Parameters:
key¶ (
Union[str,SyncDatabaseConfig[typing.Any, typing.Any, typing.Any],NoPoolSyncConfig[typing.Any, typing.Any],AsyncDatabaseConfig[typing.Any, typing.Any, typing.Any],NoPoolAsyncConfig[typing.Any, typing.Any],type[Union[SyncDatabaseConfig[typing.Any, typing.Any, typing.Any],NoPoolSyncConfig[typing.Any, typing.Any],AsyncDatabaseConfig[typing.Any, typing.Any, typing.Any],NoPoolAsyncConfig[typing.Any, typing.Any]]]]) – The configuration identifier (same as get_config).scope¶ (
Union[HTTPScope,WebSocketScope]) – The ASGI scope containing the request context.
- Return type:
- Returns:
A database connection instance for the specified database configuration.
- provide_request_connection_sync(key, state, scope)[source]
Provide a sync database connection for the specified configuration key from request scope.
If no connection exists in scope, one will be created from the pool and stored in scope for reuse. The connection will be cleaned up by the before_send handler.
For async configurations, use
provide_request_connection_asyncinstead.- Parameters:
key¶ (
Union[str,SyncDatabaseConfig[typing.Any, typing.Any, typing.Any],NoPoolSyncConfig[typing.Any, typing.Any],type[Union[SyncDatabaseConfig[typing.Any, typing.Any, typing.Any],NoPoolSyncConfig[typing.Any, typing.Any]]]]) – The configuration identifier (same as get_config).scope¶ (
Union[HTTPScope,WebSocketScope]) – The ASGI scope containing the request context.
- Return type:
- Returns:
A database connection instance for the specified database configuration.
- async provide_request_connection_async(key, state, scope)[source]
Provide an async database connection for the specified configuration key from request scope.
If no connection exists in scope, one will be created from the pool and stored in scope for reuse. The connection will be cleaned up by the before_send handler.
For sync configurations, use
provide_request_connectioninstead.- Parameters:
key¶ (
Union[str,AsyncDatabaseConfig[typing.Any, typing.Any, typing.Any],NoPoolAsyncConfig[typing.Any, typing.Any],type[Union[AsyncDatabaseConfig[typing.Any, typing.Any, typing.Any],NoPoolAsyncConfig[typing.Any, typing.Any]]]]) – The configuration identifier (same as get_config).scope¶ (
Union[HTTPScope,WebSocketScope]) – The ASGI scope containing the request context.
- Return type:
- Returns:
A database connection instance for the specified database configuration.
Session Stores¶
- class sqlspec.adapters.aiosqlite.litestar.AiosqliteStore[source]
Bases:
BaseSQLSpecStore[AiosqliteConfig]SQLite session store using AioSQLite driver.
Implements server-side session storage for Litestar using SQLite via the AioSQLite driver. Provides efficient session management with: - Native async SQLite operations - INSERT OR REPLACE for UPSERT functionality - Automatic expiration handling - Efficient cleanup of expired sessions
- Parameters:
config¶ (
AiosqliteConfig) – AiosqliteConfig instance.
Example
from sqlspec.adapters.aiosqlite import AiosqliteConfig from sqlspec.adapters.aiosqlite.litestar.store import AiosqliteStore
config = AiosqliteConfig(database=”:memory:”) store = AiosqliteStore(config) await store.create_table()
- __init__(config)[source]
Initialize AioSQLite session store.
- Parameters:
config¶ (
AiosqliteConfig) – AiosqliteConfig instance.
Notes
Table name is read from config.extension_config[“litestar”][“session_table”].
- async get(key, renew_for=None)[source]
Get a session value by key.
- async set(key, value, expires_in=None)[source]
Store a session value.
- Parameters:
- Return type:
Notes
Stores expires_at as Julian Day number (REAL) for optimal index usage.
- async delete(key)[source]
Delete a session by key.
- async exists(key)[source]
Check if a session key exists and is not expired.
- async expires_in(key)[source]
Get the time in seconds until the session expires.