Разработчик, много лет использующий SQLAlchemy, представил собственный ORM — SQLORM, рождённый из желания работать «ближе к базе» и избавиться от магии Unit of Work. В центре подхода — чистый SQL, вызываемый напрямую из Python-функций через докстринги, без скрытых транзакций и привязки объектов к сессии.
Например, SQL-функция здесь выглядит так:
@sql
def get_recent_orders(start_date, end_date):
"""
SELECT * FROM orders
WHERE created_at BETWEEN :start_date AND :end_date
ORDER BY created_at DESC
"""
А модели работают как лёгкий Active Record:
class User(Model):
id: int
name: str
email: str
# Запросы выполняются сразу — без Unit of Work
user = User.insert(name="Alice", email="a@example.com")
SQLORM позволяет выбирать данные из одной базы и вставлять в другую, не привязывая модели к конкретному движку. Модели следуют паттерну Active Record, поддерживают ленивую загрузку, связи и аннотации для генерации DDL. При этом ORM остаётся максимально тонкой оболочкой над DB-API и не пытается скрывать SQL под query builder’ом или DSL.
Проект уже имеет хорошую документацию и интеграцию с Flask.
@python_for_devs