Multi-Adapter Registry¶
Demonstrates registering multiple adapters (sync + async) on a single SQLSpec instance.
uv run python docs/examples/patterns/configs/multi_adapter_registry.py
Source¶
1"""Show how to register multiple adapters on a single SQLSpec instance."""
2
3import os
4
5from sqlspec import SQLSpec
6from sqlspec.adapters.aiosqlite import AiosqliteConfig
7from sqlspec.adapters.asyncpg import AsyncpgConfig, AsyncpgPoolConfig
8from sqlspec.adapters.duckdb import DuckDBConfig
9from sqlspec.adapters.sqlite import SqliteConfig
10
11__all__ = ("build_registry", "main")
12
13
14def build_registry() -> "SQLSpec":
15 """Create a registry with both sync and async adapters."""
16 dsn = os.getenv("SQLSPEC_USAGE_PG_DSN", "postgresql://localhost/db")
17 registry = SQLSpec()
18 registry.add_config(SqliteConfig(bind_key="sync_sqlite", connection_config={"database": ":memory:"}))
19 registry.add_config(AiosqliteConfig(bind_key="async_sqlite", connection_config={"database": ":memory:"}))
20 registry.add_config(DuckDBConfig(bind_key="duckdb_docs", connection_config={"database": ":memory:docs_duck"}))
21 registry.add_config(AsyncpgConfig(bind_key="asyncpg_docs", connection_config=AsyncpgPoolConfig(dsn=dsn)))
22 return registry
23
24
25def main() -> None:
26 """Print summary of configured adapters and bind keys."""
27 registry = build_registry()
28 {
29 "configs": [cfg.__class__.__name__ for cfg in registry.configs.values()],
30 "bind_keys": [cfg.bind_key for cfg in registry.configs.values()],
31 }
32
33
34if __name__ == "__main__":
35 main()