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
3from sqlspec import SQLSpec
4from sqlspec.adapters.aiosqlite import AiosqliteConfig
5from sqlspec.adapters.asyncpg import AsyncpgConfig, AsyncpgPoolConfig
6from sqlspec.adapters.duckdb import DuckDBConfig
7from sqlspec.adapters.sqlite import SqliteConfig
8
9__all__ = ("build_registry", "main")
10
11
12def build_registry() -> "SQLSpec":
13 """Create a registry with both sync and async adapters."""
14 registry = SQLSpec()
15 registry.add_config(SqliteConfig(bind_key="sync_sqlite", pool_config={"database": ":memory:"}))
16 registry.add_config(AiosqliteConfig(bind_key="async_sqlite", pool_config={"database": ":memory:"}))
17 registry.add_config(DuckDBConfig(bind_key="duckdb_docs", pool_config={"database": ":memory:docs_duck"}))
18 registry.add_config(
19 AsyncpgConfig(
20 bind_key="asyncpg_docs", pool_config=AsyncpgPoolConfig(dsn="postgresql://user:pass@localhost:5432/db")
21 )
22 )
23 return registry
24
25
26def main() -> None:
27 """Print summary of configured adapters and bind keys."""
28 registry = build_registry()
29 {
30 "configs": [cfg.__class__.__name__ for cfg in registry.configs.values()],
31 "bind_keys": [cfg.bind_key for cfg in registry.configs.values()],
32 }
33
34
35if __name__ == "__main__":
36 main()