MySQL¶
SQLSpec provides three MySQL adapters covering sync and async use cases.
mysql-connector-python¶
Official MySQL driver with both sync and async support.
Sync Configuration¶
- class sqlspec.adapters.mysqlconnector.MysqlConnectorSyncConfig[source]¶
Bases:
SyncDatabaseConfig[MySQLConnection,MySQLConnectionPool,MysqlConnectorSyncDriver]Configuration for mysql-connector synchronous MySQL connections.
- driver_type¶
alias of
MysqlConnectorSyncDriver
- connection_type¶
alias of
MySQLConnection
- __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.mysqlconnector.MysqlConnectorAsyncConfig[source]¶
Bases:
NoPoolAsyncConfig[MySQLConnection,MysqlConnectorAsyncDriver]Configuration for mysql-connector async MySQL connections.
- driver_type¶
alias of
MysqlConnectorAsyncDriver
- connection_type¶
alias of
MySQLConnection
- __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]¶
- provide_connection(*args, **kwargs)[source]¶
Provide a database connection context manager.
- Return type:
MysqlConnectorAsyncConnectionContext
- provide_session(*_args, statement_config=None, **_kwargs)[source]¶
Provide a database session context manager.
- Return type:
MysqlConnectorAsyncSessionContext
- 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.
Sync Driver¶
- class sqlspec.adapters.mysqlconnector.MysqlConnectorSyncDriver[source]¶
Bases:
SyncDriverAdapterBaseMySQL/MariaDB database driver using mysql-connector sync library.
- __init__(connection, statement_config=None, driver_features=None)[source]¶
Initialize driver adapter with connection and configuration.
- Parameters:
connection¶ (
MySQLConnection) -- 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
- 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.
- 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:
MysqlConnectorSyncCursor
- handle_database_exceptions()[source]¶
Handle database-specific exceptions and wrap them appropriately.
- Return type:
MysqlConnectorSyncExceptionHandler- 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.
- select_to_storage(statement, destination, /, *parameters, statement_config=None, partitioner=None, format_hint=None, telemetry=None, **kwargs)[source]¶
Stream a SELECT statement directly into storage.
- Parameters:
statement_config¶ (
StatementConfig|None) -- Optional statement configuration.partitioner¶ (
dict[str,object] |None) -- Optional partitioner configuration.format_hint¶ (
Optional[Literal['jsonl','json','parquet','arrow-ipc','csv']]) -- Optional format hint for storage.telemetry¶ (
StorageTelemetry|None) -- Optional telemetry dict to merge.
- Return type:
- Returns:
StorageBridgeJob with execution telemetry.
- Raises:
StorageCapabilityError -- If not implemented.
- load_from_arrow(table, source, *, partitioner=None, overwrite=False, telemetry=None)[source]¶
Load Arrow data into the target table.
- Parameters:
- Return type:
- Returns:
StorageBridgeJob with execution telemetry.
- load_from_storage(table, source, *, file_format, partitioner=None, overwrite=False)[source]¶
Load artifacts from storage into the target table.
- property data_dictionary: MysqlConnectorSyncDataDictionary¶
Get the data dictionary for this driver.
- Returns:
Data dictionary instance for metadata queries
Async Driver¶
- class sqlspec.adapters.mysqlconnector.MysqlConnectorAsyncDriver[source]¶
Bases:
AsyncDriverAdapterBaseMySQL/MariaDB database driver using mysql-connector async library.
- __init__(connection, statement_config=None, driver_features=None)[source]¶
Initialize driver adapter with connection and configuration.
- Parameters:
connection¶ (
MySQLConnection) -- 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
- 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.
- 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:
MysqlConnectorAsyncCursor
- handle_database_exceptions()[source]¶
Handle database-specific exceptions and wrap them appropriately.
- Return type:
MysqlConnectorAsyncExceptionHandler- 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_storage(statement, destination, /, *parameters, statement_config=None, partitioner=None, format_hint=None, telemetry=None, **kwargs)[source]¶
Stream a SELECT statement directly into storage.
- Parameters:
statement_config¶ (
StatementConfig|None) -- Optional statement configuration.partitioner¶ (
dict[str,object] |None) -- Optional partitioner configuration.format_hint¶ (
Optional[Literal['jsonl','json','parquet','arrow-ipc','csv']]) -- Optional format hint for storage.telemetry¶ (
StorageTelemetry|None) -- Optional telemetry dict to merge.
- Return type:
- Returns:
StorageBridgeJob with execution telemetry.
- async load_from_arrow(table, source, *, partitioner=None, overwrite=False, telemetry=None)[source]¶
Load Arrow data into the target table.
- Parameters:
- Return type:
- Returns:
StorageBridgeJob with execution telemetry.
- Raises:
NotImplementedError -- If not implemented.
- async load_from_storage(table, source, *, file_format, partitioner=None, overwrite=False)[source]¶
Load artifacts from storage into the target table.
- property data_dictionary: MysqlConnectorAsyncDataDictionary¶
Get the data dictionary for this driver.
- Returns:
Data dictionary instance for metadata queries
PyMySQL¶
Pure-Python MySQL driver for sync usage.
Configuration¶
- class sqlspec.adapters.pymysql.PyMysqlConfig[source]¶
Bases:
SyncDatabaseConfig[Connection,PyMysqlConnectionPool,PyMysqlDriver]Configuration for PyMySQL synchronous connections.
- driver_type¶
alias of
PyMysqlDriver
- connection_type¶
alias of
Connection
- __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.
Driver¶
- class sqlspec.adapters.pymysql.PyMysqlDriver[source]¶
Bases:
SyncDriverAdapterBaseMySQL/MariaDB database driver using PyMySQL.
- __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
- 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.
- 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:
PyMysqlCursor
- handle_database_exceptions()[source]¶
Handle database-specific exceptions and wrap them appropriately.
- Return type:
PyMysqlExceptionHandler- 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.
- select_to_storage(statement, destination, /, *parameters, statement_config=None, partitioner=None, format_hint=None, telemetry=None, **kwargs)[source]¶
Stream a SELECT statement directly into storage.
- Parameters:
statement_config¶ (
StatementConfig|None) -- Optional statement configuration.partitioner¶ (
dict[str,object] |None) -- Optional partitioner configuration.format_hint¶ (
Optional[Literal['jsonl','json','parquet','arrow-ipc','csv']]) -- Optional format hint for storage.telemetry¶ (
StorageTelemetry|None) -- Optional telemetry dict to merge.
- Return type:
- Returns:
StorageBridgeJob with execution telemetry.
- Raises:
StorageCapabilityError -- If not implemented.
- load_from_arrow(table, source, *, partitioner=None, overwrite=False, telemetry=None)[source]¶
Load Arrow data into the target table.
- Parameters:
- Return type:
- Returns:
StorageBridgeJob with execution telemetry.
- load_from_storage(table, source, *, file_format, partitioner=None, overwrite=False)[source]¶
Load artifacts from storage into the target table.
- property data_dictionary: PyMysqlDataDictionary¶
Get the data dictionary for this driver.
- Returns:
Data dictionary instance for metadata queries
asyncmy¶
Async MySQL driver.
Configuration¶
- class sqlspec.adapters.asyncmy.AsyncmyConfig[source]¶
Bases:
AsyncDatabaseConfig[Connection,AsyncmyPool,AsyncmyDriver]Configuration for Asyncmy database connections.
Example:
config = AsyncmyConfig( connection_config=AsyncmyPoolParams( host="localhost", user="root", database="mydb" ) )
- driver_type¶
alias of
AsyncmyDriver
- __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]¶
Initialize Asyncmy configuration.
- Parameters:
connection_config¶ -- Connection and pool configuration parameters
connection_instance¶ -- Existing pool instance to use
migration_config¶ -- Migration configuration
statement_config¶ -- Statement configuration override
driver_features¶ -- Driver feature configuration (TypedDict or dict)
bind_key¶ -- Optional unique identifier for this configuration
extension_config¶ -- Extension-specific configuration (e.g., Litestar plugin settings)
observability_config¶ -- Adapter-level observability overrides for lifecycle hooks and observers
**kwargs¶ -- Additional keyword arguments
- async create_connection()[source]¶
Create a single async connection (not from pool).
- Return type:
Connection- Returns:
An Asyncmy connection instance.
- async provide_pool(*args, **kwargs)[source]¶
Provide async pool instance.
- Return type:
Pool- Returns:
The async connection pool.
Driver¶
- class sqlspec.adapters.asyncmy.AsyncmyDriver[source]¶
Bases:
AsyncDriverAdapterBaseMySQL/MariaDB database driver using AsyncMy client library.
Implements asynchronous database operations for MySQL and MariaDB servers with support for parameter style conversion, type coercion, error handling, and transaction management.
- __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
- async dispatch_execute(cursor, statement)[source]¶
Execute single SQL statement.
Handles parameter processing, result fetching, and data transformation for MySQL/MariaDB operations.
- async dispatch_execute_many(cursor, statement)[source]¶
Execute SQL statement with multiple parameter sets.
Uses AsyncMy's executemany for batch operations with MySQL type conversion and parameter processing.
- Parameters:
- Returns:
Batch execution results
- Return type:
ExecutionResult- Raises:
ValueError -- If no parameters provided for executemany operation
- async dispatch_execute_script(cursor, statement)[source]¶
Execute SQL script with statement splitting and parameter handling.
Splits multi-statement scripts and executes each statement sequentially. Parameters are embedded as static values for script execution compatibility.
- async begin()[source]¶
Begin a database transaction.
Explicitly starts a MySQL transaction to ensure proper transaction boundaries.
- Raises:
SQLSpecError -- If transaction initialization fails
- Return type:
- async commit()[source]¶
Commit the current transaction.
- Raises:
SQLSpecError -- If transaction commit fails
- Return type:
- async rollback()[source]¶
Rollback the current transaction.
- Raises:
SQLSpecError -- If transaction rollback fails
- Return type:
- with_cursor(connection)[source]¶
Create cursor context manager for the connection.
- Parameters:
connection¶ (
Connection) -- AsyncMy database connection- Returns:
Context manager for cursor operations
- Return type:
AsyncmyCursor
- handle_database_exceptions()[source]¶
Provide exception handling context manager.
- Returns:
Context manager for AsyncMy exception handling
- Return type:
AsyncmyExceptionHandler
- async select_to_storage(statement, destination, /, *parameters, statement_config=None, partitioner=None, format_hint=None, telemetry=None, **kwargs)[source]¶
Execute a query and stream Arrow-formatted results into storage.
- Return type:
- async load_from_arrow(table, source, *, partitioner=None, overwrite=False, telemetry=None)[source]¶
Load Arrow data into MySQL using batched inserts.
- Return type:
- async load_from_storage(table, source, *, file_format, partitioner=None, overwrite=False)[source]¶
Load staged artifacts from storage into MySQL.
- Return type:
- property data_dictionary: AsyncmyDataDictionary¶
Get the data dictionary for this driver.
- Returns:
Data dictionary instance for metadata queries
aiomysql¶
Async MySQL driver (PyMySQL-compatible wire protocol, asyncio-native).
Configuration¶
- class sqlspec.adapters.aiomysql.AiomysqlConfig[source]¶
Bases:
AsyncDatabaseConfig[Connection,AiomysqlPool,AiomysqlDriver]Configuration for aiomysql database connections.
Example:
config = AiomysqlConfig( connection_config=AiomysqlPoolParams( host="localhost", user="root", db="mydb" ) )
- driver_type¶
alias of
AiomysqlDriver
- __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]¶
Initialize aiomysql configuration.
- Parameters:
connection_config¶ -- Connection and pool configuration parameters
connection_instance¶ -- Existing pool instance to use
migration_config¶ -- Migration configuration
statement_config¶ -- Statement configuration override
driver_features¶ -- Driver feature configuration (TypedDict or dict)
bind_key¶ -- Optional unique identifier for this configuration
extension_config¶ -- Extension-specific configuration (e.g., Litestar plugin settings)
observability_config¶ -- Adapter-level observability overrides for lifecycle hooks and observers
**kwargs¶ -- Additional keyword arguments
- async create_connection()[source]¶
Create a single async connection (not from pool).
- Return type:
Connection- Returns:
An aiomysql connection instance.
- async provide_pool(*args, **kwargs)[source]¶
Provide async pool instance.
- Return type:
Pool- Returns:
The async connection pool.
Driver¶
- class sqlspec.adapters.aiomysql.AiomysqlDriver[source]¶
Bases:
AsyncDriverAdapterBaseMySQL/MariaDB database driver using aiomysql client library.
Implements asynchronous database operations for MySQL and MariaDB servers with support for parameter style conversion, type coercion, error handling, and transaction management.
- __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
- async dispatch_execute_many(cursor, statement)[source]¶
Execute SQL statement with multiple parameter sets.
- Parameters:
- Returns:
Batch execution results
- Return type:
ExecutionResult- Raises:
ValueError -- If no parameters provided for executemany operation
- async dispatch_execute_script(cursor, statement)[source]¶
Execute SQL script with statement splitting and parameter handling.
- async begin()[source]¶
Begin a database transaction.
- Raises:
SQLSpecError -- If transaction initialization fails
- Return type:
- async commit()[source]¶
Commit the current transaction.
- Raises:
SQLSpecError -- If transaction commit fails
- Return type:
- async rollback()[source]¶
Rollback the current transaction.
- Raises:
SQLSpecError -- If transaction rollback fails
- Return type:
- with_cursor(connection)[source]¶
Create cursor context manager for the connection.
- Parameters:
connection¶ (
Connection) -- aiomysql database connection- Returns:
Context manager for cursor operations
- Return type:
AiomysqlCursor
- handle_database_exceptions()[source]¶
Provide exception handling context manager.
- Returns:
Context manager for aiomysql exception handling
- Return type:
AiomysqlExceptionHandler
- async select_to_storage(statement, destination, /, *parameters, statement_config=None, partitioner=None, format_hint=None, telemetry=None, **kwargs)[source]¶
Execute a query and stream Arrow-formatted results into storage.
- Return type:
- async load_from_arrow(table, source, *, partitioner=None, overwrite=False, telemetry=None)[source]¶
Load Arrow data into MySQL using batched inserts.
- Return type:
- async load_from_storage(table, source, *, file_format, partitioner=None, overwrite=False)[source]¶
Load staged artifacts from storage into MySQL.
- Return type:
- property data_dictionary: AiomysqlDataDictionary¶
Get the data dictionary for this driver.
- Returns:
Data dictionary instance for metadata queries
Connection Parameters¶
Pool Parameters¶
- class sqlspec.adapters.aiomysql.AiomysqlPoolParams[source]¶
Bases:
AiomysqlConnectionParamsaiomysql pool parameters.
Driver Features¶
- class sqlspec.adapters.aiomysql.AiomysqlDriverFeatures[source]¶
Bases:
TypedDictaiomysql driver feature flags.
MySQL/MariaDB handle JSON natively, but custom serializers can be provided for specialized use cases (e.g., orjson for performance, msgspec for type safety).
- json_serializer: Custom JSON serializer function.
Defaults to sqlspec.utils.serializers.to_json. Use for performance (orjson) or custom encoding.
- json_deserializer: Custom JSON deserializer function.
Defaults to sqlspec.utils.serializers.from_json. Use for performance (orjson) or custom decoding.
- on_connection_create: Async callback executed when a connection is acquired from pool.
Receives the raw aiomysql connection for low-level driver configuration. Called exactly once per physical connection using WeakSet tracking.
- enable_events: Enable database event channel support.
Defaults to True when extension_config["events"] is configured. Provides pub/sub capabilities via table-backed queue (MySQL/MariaDB have no native pub/sub). Requires extension_config["events"] for migration setup.
- events_backend: Event channel backend selection.
Only option: "table_queue" (durable table-backed queue with retries and exactly-once delivery). MySQL/MariaDB do not have native pub/sub, so table_queue is the only backend. Defaults to "table_queue".