Skip to main content
Connect to MySQL, PostgreSQL, or SQLite databases. Auto-detects the database type from the connection string.
import sql

Connecting

import sql

# PostgreSQL
db = sql.connect("postgres://user:pass@localhost:5432/mydb")

# MySQL
db = sql.connect("mysql://user:pass@localhost:3306/mydb")

# SQLite (file)
db = sql.connect("sqlite://data.db")
db = sql.connect("data.db")        # auto-detects .db extension
The connection string prefix determines the database type.

Methods

MethodDescriptionReturns
db.query(sql, ...params)Execute a SELECT queryList of dicts (rows)
db.exec(sql, ...params)Execute INSERT/UPDATENumber of affected rows
db.close()Close the connection poolnull

Query Results

Queries return a list of dicts.
rows = db.query("SELECT * FROM users")
for row in rows
    print("{row.name} is {row.age} years old")

Parameterized Queries

Always use parameterized queries to prevent SQL injection.
# Queries use '?' as a placeholder for parameters across all database types.

db.exec("INSERT INTO logs (message) VALUES (?)", "startup")
rows = db.query("SELECT * FROM users WHERE age > ?", "18")

Examples

import sql
db = sql.connect("todos.db")
db.exec("CREATE TABLE IF NOT EXISTS todos (task TEXT)")
db.exec("INSERT INTO todos (task) VALUES (?)", "Write docs")
todos = db.query("SELECT * FROM todos")

Compile Flag

cargo build --release --no-default-features --features mod_database_sql