Skip to content

bunpy.sql

import bunpy.sql as sql

Opening a database

db = sql.open("mydb.sqlite")
db = sql.open(":memory:")   # in-memory database

Executing queries

# DDL
db.exec("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)")

# Insert with positional parameters
db.exec("INSERT INTO users (name) VALUES (?)", "Alice")

# Query - returns list of row dicts
rows = db.query("SELECT * FROM users")
for row in rows:
    print(row["name"])

# Single row
user = db.queryOne("SELECT * FROM users WHERE id = ?", 1)

# Scalar value
count = db.queryValue("SELECT COUNT(*) FROM users")

Transactions

with db.transaction():
    db.exec("INSERT INTO users (name) VALUES (?)", "Bob")
    db.exec("INSERT INTO users (name) VALUES (?)", "Carol")
# committed on exit; rolled back on exception

Prepared statements

stmt = db.prepare("INSERT INTO users (name) VALUES (?)")
for name in ["Dave", "Eve", "Frank"]:
    stmt.run(name)

Closing

db.close()