SQL database abstraction layer for the Genro framework.
- Database Adapters: Support for SQLite, PostgreSQL (extensible)
- ORM: Type-safe table definitions with dataclass-based columns
- Migrations: Automatic schema migrations
- Triggers: Event-based triggers (onInserting, onInserted, onUpdating, etc.)
- Query Compiler: Genropy-style query syntax with
$fieldand:param - Environment System: Thread-local context for passing data through trigger chains
- Trigger Stack: Automatic prevention of infinite recursion
pip install genro-sqlfrom dataclasses import dataclass
from genro_sql import GenroMicroDb, Table
# Define a table
class BookTable(Table):
sql_name = "books"
pkey = "id"
@dataclass
class Columns:
id: int
title: str
author: str
pages: int
# Create database
db = GenroMicroDb(name="mydb", implementation="sqlite", path="mydb.sqlite")
db.add_table(BookTable)
db.migrate()
# Use CRUD operations
book_id = db.tables.book.insert(record={
'title': 'Clean Code',
'author': 'Robert Martin',
'pages': 464
})
book = db.tables.book.get(book_id)genro-core>=0.1.0- Core utilities and decoratorspydantic>=2.0.0- Data validation
MIT License - see LICENSE file for details.