AsyncPG#
High-performance async PostgreSQL adapter using asyncpg. Supports native pipelines, Arrow export, and Cloud SQL / AlloyDB connectors.
Configuration#
- class sqlspec.adapters.asyncpg.AsyncpgConfig[source]#
Bases:
AsyncDatabaseConfig[PoolConnectionProxy,Pool[Record],AsyncpgDriver]Configuration for AsyncPG database connections using TypedDict.
- driver_type#
alias of
AsyncpgDriver
- connection_type#
alias of
PoolConnectionProxy
- __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 AsyncPG configuration.
- Parameters:
connection_config¶ -- Connection and pool configuration parameters (TypedDict or dict)
connection_instance¶ -- Existing pool instance to use
migration_config¶ -- Migration configuration
statement_config¶ -- Statement configuration override
driver_features¶ -- Driver features configuration (TypedDict or dict)
bind_key¶ -- Optional unique identifier for this configuration
extension_config¶ -- Extension-specific configuration
observability_config¶ -- Adapter-level observability overrides for lifecycle hooks and observers
**kwargs¶ -- Additional keyword arguments
- async create_connection()[source]#
Create a single async connection from the pool.
- Return type:
PoolConnectionProxy- Returns:
An AsyncPG connection instance.
- provide_session(*_args, statement_config=None, **_kwargs)[source]#
Provide an async driver session context manager.
- async provide_pool(*args, **kwargs)[source]#
Provide async pool instance.
- Returns:
The async connection pool.
- get_signature_namespace()[source]#
Get the signature namespace for AsyncPG types.
This provides all AsyncPG-specific types that Litestar needs to recognize to avoid serialization attempts.
JSON and JSONB Codecs#
AsyncPG connections register binary json and jsonb codecs by default.
This lets regular statement execution and load_from_arrow() pass Python
dict and list values into PostgreSQL JSON / JSONB columns while
preserving asyncpg's binary COPY protocol expectations for jsonb payloads.
Set driver_features={"enable_json_codecs": False} when an application needs
to manage asyncpg JSON codecs manually.
- class sqlspec.adapters.asyncpg.config.AsyncpgPoolConfig[source]#
Bases:
AsyncpgConnectionConfigTypedDict for AsyncPG pool parameters, inheriting connection parameters.
Driver#
- class sqlspec.adapters.asyncpg.AsyncpgDriver[source]#
Bases:
AsyncDriverAdapterBaseAsyncPG PostgreSQL driver for async database operations.
Supports COPY operations, numeric parameter style handling, PostgreSQL exception handling, transaction management, SQL statement compilation and caching, and parameter processing with type coercion.
- __init__(connection, statement_config=None, driver_features=None)[source]#
Initialize driver adapter with connection and configuration.
- Parameters:
connection¶ (
PoolConnectionProxy) -- 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 both SELECT queries and non-SELECT operations.
- async dispatch_execute_many(cursor, statement)[source]#
Execute SQL with multiple parameter sets using AsyncPG's executemany.
- async dispatch_execute_script(cursor, statement)[source]#
Execute SQL script with statement splitting and parameter handling.
- async dispatch_special_handling(cursor, statement)[source]#
Handle PostgreSQL COPY operations and other special cases.
- async set_migration_session_schema(schema)[source]#
Set the PostgreSQL search path for migration SQL.
- Return type:
- async set_migration_non_transactional_schema(schema)[source]#
Set the PostgreSQL search path for non-transactional migration SQL.
- Return type:
- async reset_migration_session_schema()[source]#
Reset the PostgreSQL search path after non-transactional migration SQL.
- Return type:
- with_cursor(connection)[source]#
Create context manager for AsyncPG cursor.
- Return type:
AsyncpgCursor
- dispatch_select_stream(statement, chunk_size)[source]#
Return a native asyncpg row stream backed by a cursor in a stream-owned transaction.
- handle_database_exceptions()[source]#
Handle database exceptions with PostgreSQL error codes.
- Return type:
AsyncpgExceptionHandler
- async execute_stack(stack, *, continue_on_error=False)[source]#
Execute a StatementStack using asyncpg's rapid batching.
- Return type:
- async select_to_storage(statement, destination, /, *parameters, statement_config=None, partitioner=None, format_hint=None, telemetry=None, **kwargs)[source]#
Execute a query and persist results to storage once native COPY is available.
- Return type:
- async load_from_arrow(table, source, *, partitioner=None, overwrite=False, telemetry=None)[source]#
Load Arrow data into a PostgreSQL table via COPY.
- Return type:
- async load_from_storage(table, source, *, file_format, partitioner=None, overwrite=False)[source]#
Read an artifact from storage and ingest it via COPY.
- Return type:
- property data_dictionary: AsyncpgDataDictionary#
Get the data dictionary for this driver.
- Returns:
Data dictionary instance for metadata queries
Extension Dialects#
AsyncPG supports the pgvector and ParadeDB dialects for vector similarity search and full-text search operators. See the Dialects reference for operator details.
Data Dictionary#
- class sqlspec.adapters.asyncpg.data_dictionary.AsyncpgDataDictionary[source]#
Bases:
AsyncDataDictionaryBasePostgreSQL-specific async data dictionary.
- dialect: ClassVar[str] = 'postgres'#
Dialect identifier. Must be defined by subclasses as a class attribute.
- async get_metadata_capabilities(driver, domains=None)[source]#
Get PostgreSQL replacement data-dictionary capability profile.
- Return type:
MetadataCapabilityProfile
- async get_system_metadata_capabilities(driver, domains=None)[source]#
Get PostgreSQL opt-in system metadata capability disclosures.
- async get_objects(driver, schema=None)[source]#
Get database object metadata.
- Return type:
MetadataResult
- async get_table_details(driver, table, schema=None)[source]#
Get rich table metadata.
- Return type:
MetadataResult
- async get_constraints(driver, table=None, schema=None)[source]#
Get constraint metadata.
- Return type:
MetadataResult
- async get_privileges(driver, object_name=None, schema=None)[source]#
Get privilege metadata.
- Return type:
MetadataResult
- async get_dependencies(driver, object_name=None, schema=None)[source]#
Get dependency metadata.
- Return type:
MetadataResult
- async get_ddl(driver, object_name, schema=None, *, object_type='table', include_dependencies=True, prefer_native=True, redact=True)[source]#
Get object DDL where PostgreSQL exposes native definition helpers.
- Return type:
DDLResult
- async get_system_metadata(driver, request=None, **kwargs)[source]#
Get opt-in PostgreSQL system metadata.
- Return type:
SystemMetadataResult
- async get_version(driver)[source]#
Get PostgreSQL database version information.
- Parameters:
driver¶ (
AsyncpgDriver) -- Async database driver instance.- Return type:
VersionInfo|None- Returns:
PostgreSQL version information or None if detection fails.
- async get_feature_flag(driver, feature)[source]#
Check if PostgreSQL database supports a specific feature.
- Parameters:
driver¶ (
AsyncpgDriver) -- Async database driver instance.
- Return type:
- Returns:
True if feature is supported, False otherwise.
- async get_optimal_type(driver, type_category)[source]#
Get optimal PostgreSQL type for a category.
- Parameters:
driver¶ (
AsyncpgDriver) -- Async database driver instance.
- Return type:
- Returns:
PostgreSQL-specific type name.
- async get_tables(driver, schema=None)[source]#
Get tables sorted by topological dependency order using Recursive CTE.
- Return type:
list[TableMetadata]
- async get_columns(driver, table=None, schema=None)[source]#
Get column information for a table or schema.
- Return type:
list[ColumnMetadata]