Database

Low-level and high-level SQLite client backed by the native SQLite C library.

Constructor

Database(path, timeout=30.0, detect_types=0, isolation_level=None, pragmas=None, row_factory=None, uri=False, check_same_thread=False, statement_cache_size=128)

Query helpers

  • execute(sql, params=None)

  • executemany(sql, seq_of_params)

  • script(sql_script)

  • fetch_all(sql, params=None)

  • fetch_one(sql, params=None)

  • fetch_value(sql, params=None, default=None)

  • select(table, columns=None, where=None, params=None, group_by=None, having=None, order_by=None, limit=None, offset=None, distinct=False)

  • insert(table, values, on_conflict='abort')

  • insert_many(table, rows, on_conflict='abort', chunk_size=500)

  • update(table, values, where, params=None, order_by=None, limit=None)

  • delete(table, where, params=None, order_by=None, limit=None)

  • upsert(table, values, conflict_columns, update_columns=None)

  • count(table, where=None, params=None)

  • exists(table, where=None, params=None)

  • table(name)

  • transaction()

Example

from sqlite7 import open_db

with open_db(":memory:") as db:
    db.script("CREATE TABLE users (id INTEGER PRIMARY KEY, email TEXT UNIQUE, name TEXT, age INTEGER)")
    db.insert("users", {"email": "ada@example.com", "name": "Ada", "age": 36})
    rows = db.select(
        "users",
        columns=["id", "name"],
        where="age >= ?",
        params=[30],
        order_by="id ASC",
        limit=10,
        offset=0,
    )
    print(rows)