Quickstart#

SQLSpec quickstart demo

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#