mssql-python¶
Sync + async SQL Server adapter built on Microsoft's official
mssql-python driver. Ships a
T-SQL data dictionary, a Litestar session store, an events queue store,
and migrations tracker. The SQL splitter also gains GO batch-separator
handling so multi-batch T-SQL scripts execute correctly.
Sync Configuration¶
- class sqlspec.adapters.mssql_python.MssqlPythonConfig[source]¶
Bases:
SyncDatabaseConfig[Connection,MssqlPythonConnectionPool,MssqlPythonDriver]Configuration for mssql-python synchronous database connections.
- driver_type¶
alias of
MssqlPythonDriver
- connection_type¶
alias of
Connection
- migration_tracker_type¶
alias of
MssqlPythonSyncMigrationTracker
- __init__(*, connection_config=None, connection_instance=None, migration_config=None, statement_config=None, driver_features=None, bind_key=None, extension_config=None, observability_config=None, **kwargs)[source]¶
- get_signature_namespace()[source]¶
Get the signature namespace for this database configuration.
Returns a dictionary of type names to objects (classes, functions, or other callables) that should be registered with Litestar's signature namespace to prevent serialization attempts on database-specific structures.
Async Configuration¶
- class sqlspec.adapters.mssql_python.MssqlPythonAsyncConfig[source]¶
Bases:
AsyncDatabaseConfig[Connection,MssqlPythonConnectionPool,MssqlPythonAsyncDriver]Configuration for mssql-python async database connections.
- driver_type¶
alias of
MssqlPythonAsyncDriver
- connection_type¶
alias of
Connection
- migration_tracker_type¶
alias of
MssqlPythonAsyncMigrationTracker
- __init__(*, connection_config=None, connection_instance=None, migration_config=None, statement_config=None, driver_features=None, bind_key=None, extension_config=None, observability_config=None, **kwargs)[source]¶
- get_signature_namespace()[source]¶
Get the signature namespace for this database configuration.
Returns a dictionary of type names to objects (classes, functions, or other callables) that should be registered with Litestar's signature namespace to prevent serialization attempts on database-specific structures.
- class sqlspec.adapters.mssql_python.MssqlPythonConnectionParams[source]¶
Bases:
TypedDictmssql-python connection parameters.
- class sqlspec.adapters.mssql_python.MssqlPythonPoolParams[source]¶
Bases:
MssqlPythonConnectionParamsmssql-python driver-level pooling parameters.
Sync Driver¶
- class sqlspec.adapters.mssql_python.MssqlPythonDriver[source]¶
Bases:
SyncDriverAdapterBasemssql-python sync driver.
- __init__(connection, statement_config=None, driver_features=None)[source]¶
Initialize driver adapter with connection and configuration.
- Parameters:
connection¶ (
Connection) -- Database connection instancestatement_config¶ (
StatementConfig|None) -- Statement configuration for the driverdriver_features¶ (
dict[str, typing.Any] |None) -- Driver-specific features like extensions, secrets, and connection callbacksobservability¶ -- Optional runtime handling lifecycle hooks, observers, and spans
- property data_dictionary: MssqlPythonSyncDataDictionary¶
Get the data dictionary for this driver.
- Returns:
Data dictionary instance for metadata queries
- dispatch_execute(cursor, statement)[source]¶
Execute a single SQL statement.
Must be implemented by each driver for database-specific execution logic.
- dispatch_execute_many(cursor, statement)[source]¶
Execute SQL with multiple parameter sets (executemany).
Must be implemented by each driver for database-specific executemany logic.
- dispatch_execute_script(cursor, statement)[source]¶
Execute a SQL script containing multiple statements.
Default implementation splits the script and executes statements individually. Drivers can override for database-specific script execution methods.
- collect_rows(cursor, fetched)[source]¶
Collect rows from cursor after fetchall for the direct execution path.
Adapters should override this method to provide optimized row collection that bypasses full dispatch_execute overhead.
- Parameters:
- Return type:
- Returns:
Tuple of (data, column_names, row_count).
- Raises:
NotImplementedError -- If the adapter does not implement this method.
- resolve_rowcount(cursor)[source]¶
Resolve the number of affected rows from cursor for the direct execution path.
Adapters should override this method to provide optimized rowcount resolution that bypasses full dispatch_execute overhead.
- Parameters:
cursor¶ (
Cursor) -- Database cursor with rowcount metadata.- Return type:
- Returns:
Number of affected rows, or 0 when unknown.
- Raises:
NotImplementedError -- If the adapter does not implement this method.
- with_cursor(connection)[source]¶
Create and return a context manager for cursor acquisition and cleanup.
Returns a context manager that yields a cursor for database operations. Concrete implementations handle database-specific cursor creation and cleanup.
- Return type:
MssqlPythonCursor
- handle_database_exceptions()[source]¶
Handle database-specific exceptions and wrap them appropriately.
- Return type:
MssqlPythonExceptionHandler- Returns:
Exception handler with deferred exception pattern for mypyc compatibility. The handler stores mapped exceptions in pending_exception rather than raising from __exit__ to avoid ABI boundary violations.
Async Driver¶
- class sqlspec.adapters.mssql_python.MssqlPythonAsyncDriver[source]¶
Bases:
AsyncDriverAdapterBaseAsync wrapper around mssql-python's sync DB-API via asyncio.to_thread.
- __init__(connection, statement_config=None, driver_features=None)[source]¶
Initialize driver adapter with connection and configuration.
- Parameters:
connection¶ (
Connection) -- Database connection instancestatement_config¶ (
StatementConfig|None) -- Statement configuration for the driverdriver_features¶ (
dict[str, typing.Any] |None) -- Driver-specific features like extensions, secrets, and connection callbacksobservability¶ -- Optional runtime handling lifecycle hooks, observers, and spans
- property data_dictionary: MssqlPythonAsyncDataDictionary¶
Get the data dictionary for this driver.
- Returns:
Data dictionary instance for metadata queries
- async dispatch_execute(cursor, statement)[source]¶
Execute a single SQL statement.
Must be implemented by each driver for database-specific execution logic.
- async dispatch_execute_many(cursor, statement)[source]¶
Execute SQL with multiple parameter sets (executemany).
Must be implemented by each driver for database-specific executemany logic.
- async dispatch_execute_script(cursor, statement)[source]¶
Execute a SQL script containing multiple statements.
Default implementation splits the script and executes statements individually. Drivers can override for database-specific script execution methods.
- collect_rows(cursor, fetched)[source]¶
Collect rows from cursor after fetchall for the direct execution path.
Adapters should override this method to provide optimized row collection that bypasses full dispatch_execute overhead.
- Parameters:
- Return type:
- Returns:
Tuple of (data, column_names, row_count).
- Raises:
NotImplementedError -- If the adapter does not implement this method.
- resolve_rowcount(cursor)[source]¶
Resolve the number of affected rows from cursor for the direct execution path.
Adapters should override this method to provide optimized rowcount resolution that bypasses full dispatch_execute overhead.
- Parameters:
cursor¶ (
Cursor) -- Database cursor with rowcount metadata.- Return type:
- Returns:
Number of affected rows, or 0 when unknown.
- Raises:
NotImplementedError -- If the adapter does not implement this method.
- with_cursor(connection)[source]¶
Create and return an async context manager for cursor acquisition and cleanup.
Returns an async context manager that yields a cursor for database operations. Concrete implementations handle database-specific cursor creation and cleanup.
- Return type:
MssqlPythonAsyncCursor
- handle_database_exceptions()[source]¶
Handle database-specific exceptions and wrap them appropriately.
- Return type:
MssqlPythonAsyncExceptionHandler- Returns:
Exception handler with deferred exception pattern for mypyc compatibility. The handler stores mapped exceptions in pending_exception rather than raising from __aexit__ to avoid ABI boundary violations.
- async select_to_arrow(statement, /, *parameters, statement_config=None, return_format='table', native_only=False, batch_size=None, arrow_schema=None, **kwargs)[source]¶
Execute a query and return native mssql-python Arrow results.
- async bulk_copy(target_table, rows, *, batch_size=64000, timeout=3600, column_mappings=None, keep_identity=False, check_constraints=True, table_lock=False, keep_nulls=False, fire_triggers=False, use_internal_transaction=False)[source]¶
Bulk insert rows via mssql-python cursor.bulkcopy().
- Return type:
Connection Pool¶
Data Dictionaries¶
- class sqlspec.adapters.mssql_python.MssqlPythonSyncDataDictionary[source]¶
Bases:
_MssqlDataDictionaryMixin,SyncDataDictionaryBaseMSSQL sync data dictionary.
- dialect: ClassVar[str] = 'mssql'¶
Dialect identifier. Must be defined by subclasses as a class attribute.
- get_version(driver)[source]¶
Get SQL Server version information.
- Return type:
MssqlVersionInfo|None
- get_feature_flag(driver, feature)[source]¶
Check whether SQL Server supports a feature.
- Return type:
- get_optimal_type(driver, type_category)[source]¶
Get optimal SQL Server type for a category.
- Return type:
- get_tables(driver, schema=None)[source]¶
Get tables sorted by dependency order with catalog fallback.
- Return type:
- get_columns(driver, table=None, schema=None)[source]¶
Get column information for a table or schema.
- Return type:
- get_indexes(driver, table=None, schema=None)[source]¶
Get index metadata for a table or schema.
- Return type:
- class sqlspec.adapters.mssql_python.MssqlPythonAsyncDataDictionary[source]¶
Bases:
_MssqlDataDictionaryMixin,AsyncDataDictionaryBaseMSSQL async data dictionary.
- dialect: ClassVar[str] = 'mssql'¶
Dialect identifier. Must be defined by subclasses as a class attribute.
- async get_version(driver)[source]¶
Get SQL Server version information.
- Return type:
MssqlVersionInfo|None
- async get_feature_flag(driver, feature)[source]¶
Check whether SQL Server supports a feature.
- Return type:
- async get_optimal_type(driver, type_category)[source]¶
Get optimal SQL Server type for a category.
- Return type:
- async get_tables(driver, schema=None)[source]¶
Get tables sorted by dependency order with catalog fallback.
- Return type:
- async get_columns(driver, table=None, schema=None)[source]¶
Get column information for a table or schema.
- Return type:
- async get_indexes(driver, table=None, schema=None)[source]¶
Get index metadata for a table or schema.
- Return type:
Migration Trackers¶
- class sqlspec.adapters.mssql_python.MssqlPythonSyncMigrationTracker[source]¶
Bases:
MssqlPythonMigrationTrackerMixin,SyncMigrationTrackerT-SQL sync migration tracker.
- class sqlspec.adapters.mssql_python.MssqlPythonAsyncMigrationTracker[source]¶
Bases:
MssqlPythonMigrationTrackerMixin,AsyncMigrationTrackerT-SQL async migration tracker.