rhosocial-activerecord · v1.0 · Apache 2.0

Python ORM
重新设计
从类型开始。

Python 原生类型注解定义模型。链式查询透明生成 SQL。 同步与异步,同一套 API

6+
Database backends
100%
Type annotated
3.8+
Python support
0
ORM deps
demo.py — rhosocial-activerecord
live
Python model
class User(ActiveRecord): __table_name__ = "users" id: Optional[int] = None name: str email: str age: int = 0 # fluent query builder results = ( User.query() .where(User.c.age >= 18) .where(User.c.name.like("%alice%")) .order_by(User.c.name) .limit(10) .all() )
Generated SQL .to_sql()
SELECT u.id, u.name, u.email, u.age FROM users u WHERE u.age >= ? AND u.name LIKE ? ORDER BY u.name ASC LIMIT 10
PARAMS: (18, "%alice%")
idnameemailage
→ 3Alicealice@example.org24
→ 7alice_devadev@example.org31
2 rows in 0.8ms
Interactive

点击构建查询,实时看 SQL

每一个链式方法对应一行 SQL。透明,可控,无魔法。

Query Builder
点击开关
User.query()
必选
.where(age >= 18)
WHERE
.where(name.like(…))
AND
.join(Post, …)
JOIN
.order_by(name)
ORDER BY
.limit(10)
LIMIT
.all()
执行
Generated SQL
compiled
Six promises

六个核心设计决策

Architecture

两层独立,按需组合

ActiveRecord 是 Backend 的用户;Backend 可独立运行。同步/异步配对,不可混用。

ActiveRecord Layer
ActiveRecord
ActiveQuery · SetOperation · CTEQuery
AsyncActiveRecord
AsyncActiveQuery · AsyncCTEQuery
sync
async
uses
ABC
Backend Layer
StorageBackend
SQLite · PostgreSQL · MySQL · MariaDB · SQL Server · Oracle
AsyncStorageBackend
AsyncSQLite · AsyncPG · AsyncMySQL · …
all backends
Compare

与其它 ORM 对比

特性
ρAR
SQLAlchemy
Django ORM
SQLModel
Peewee
Tortoise
后端可独立使用
Sync/Async API 一致
原生 Pydantic v2
无 Session 概念
½
½
½
SQL 透明 .to_sql()
½
½
½
零强制迁移依赖
Get started

一行安装,十分钟上手。

SQLite 随核心包一起。Pydantic 是唯一依赖。其他后端按需安装。

$ pip install rhosocial-activerecord 点击复制
阅读文档 → GitHub →