Skip to content

Configuration

Every SQLSaber session is configured through a single SQLSaberOptions dataclass. Construct it with keyword arguments and pass it to SQLSaber(options=...).

from sqlsaber import SQLSaberOptions
options = SQLSaberOptions(
database="postgresql://user:pass@localhost:5432/analytics",
model_name="anthropic:claude-sonnet-4-5-20250929",
thinking_level="medium",
)
FieldTypeDefaultDescription
databasestr | list[str] | tuple[str, ...] | NoneNoneConnection string, file path, configured DB name, a list of CSV paths, or a list of targets for a multi-database session.
model_namestr | NoneNoneModel in "provider:model" form. Falls back to your configured/default model.
api_keystr | NoneNoneAPI key for the model’s provider. Usually unnecessary — see Credentials.
thinking_enabledbool | NoneNoneToggle extended thinking on supported reasoning models.
thinking_levelThinkingLevel | str | NoneNone"minimal" | "low" | "medium" | "high" | "maximum". Setting a level enables thinking.
system_promptstr | Path | NoneNoneCustom system prompt text, or a path to a file containing it.
settingsConfig | NoneNoneInject a Config (e.g. Config.in_memory(...)). Defaults to file-backed Config.default().
knowledge_managerKnowledgeManager | NoneNoneInject your own knowledge base (see Advanced).
thread_managerThreadManager | NoneNonePersist conversation history across runs (see Advanced).
tool_overridesMapping[str, ModelOverides] | NoneNonePer-tool model/API-key overrides (see Advanced).
allow_dangerousboolFalseAllow write operations and a restricted subset of DDL (see Advanced).

The database option accepts the same targets as the CLI’s -d flag.

SQLSaberOptions(database="postgresql://user:pass@host:5432/db")
SQLSaberOptions(database="mysql://user:pass@host:3306/db")
SQLSaberOptions(database="sqlite:///path/to/local.db")
SQLSaberOptions(database="duckdb:///path/to/warehouse.duckdb")

Point directly at a SQLite, DuckDB, or CSV file:

SQLSaberOptions(database="./data/sales.db")
SQLSaberOptions(database="./customers.csv")

Pass a list (or tuple) of CSV paths to query across them together. All CSVs are merged into a single in-memory database with one table per file:

SQLSaberOptions(database=["users.csv", "orders.csv"])

Pass a list of non-CSV targets (configured names, connection strings, or file paths) to connect to several databases in one session. The agent queries each one separately and combines the results:

SQLSaberOptions(database=["sales", "postgresql://user:pass@host:5432/events"])

The resulting session exposes db_names and connections for the connected databases:

saber = SQLSaber(options)
saber.db_names # ["sales", "events"]
saber.connections # {name: connection, ...}

If you’ve already registered a connection with the CLI (saber db add), refer to it by name:

SQLSaberOptions(database="prod-db")

See the Database Setup guide for details on connection strings and registering databases.