Module

data

Typed async database access for chirp.

SQL in, frozen dataclasses out. Not an ORM.

Basic usage::

from chirp.data import Database

db = Database("sqlite:///app.db")

@dataclass(frozen=True, slots=True)
class User:
    id: int
    name: str
    email: str

users = await db.fetch(User, "SELECT * FROM users WHERE active = ?", True)
user = await db.fetch_one(User, "SELECT * FROM users WHERE id = ?", 42)

SQLite works out of the box. For PostgreSQL, install the driver::

pip install chirp[data-pg]    # PostgreSQL