Quickstart¶
Get running with SQLSpec in a few minutes using SQLite. These examples are short on purpose so you can copy them into a scratch file and experiment.
Step 1: Connect¶
connect to sqlite¶from sqlspec import SQLSpec
from sqlspec.adapters.sqlite import SqliteConfig
db_path = tmp_path / "sqlspec.db"
spec = SQLSpec()
config = spec.add_config(SqliteConfig(connection_config={"database": str(db_path)}))
with spec.provide_session(config) as session:
session.execute("create table if not exists notes (id integer primary key, body text)")
session.execute("insert into notes (body) values (?)", ("Hello, SQLSpec!",))
result = session.execute("select id, body from notes")
print(result.all())
Step 2: Run Your First Query¶
first query¶from sqlspec import SQLSpec
from sqlspec.adapters.sqlite import SqliteConfig
db_path = tmp_path / "queries.db"
spec = SQLSpec()
config = spec.add_config(SqliteConfig(connection_config={"database": str(db_path)}))
with spec.provide_session(config) as session:
session.execute("create table if not exists users (id integer primary key, name text)")
session.execute("insert into users (name) values (?)", ("Ada",))
result = session.execute("select id, name from users where name = ?", ("Ada",))
print(result.one())
Step 3: Tweak Configuration¶
statement configuration¶from sqlspec import SQLSpec
from sqlspec.adapters.sqlite import SqliteConfig
from sqlspec.core import StatementConfig
db_path = tmp_path / "app.db"
statement_config = StatementConfig(enable_validation=False)
spec = SQLSpec()
primary = spec.add_config(
SqliteConfig(connection_config={"database": str(db_path)}, statement_config=statement_config)
)
with spec.provide_session(primary) as session:
session.execute("create table if not exists health (id integer primary key, ok bool)")
result = session.execute("select * from health")
print(result.all())
Next Steps¶
Drivers and Querying for driver-specific guidance and transaction patterns.
Query Builder if you want the fluent SQL builder.
SQL File Loader to load named SQL queries from files.
Framework Integrations to plug into Litestar, FastAPI, Flask, or Starlette.
Usage for deeper configuration and driver guidance.