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 →