03 · REPOSITORY API

一套紧凑的仓储语义

ModelRepository 提供创建、查询、更新、删除、统计和原生执行接口。

写入方法接受 Mapping 或实现 model_dump(exclude_unset=True) 的对象。读取结果根据是否配置 ReadModel 决定返回类型。

方法总览

类别 方法 用途
Create addadd_many 创建一项或批量创建
Read findfind_onegetget_many 条件与主键读取
Update updateupdate_by_idupdate_many 显式条件更新
Delete removeremove_by_idremove_many 显式条件删除
Inspect countexistsstorage_name 统计与存储信息
Native execute 执行后端原生命令

查询与分页

users = await repository.find(User.name.contains("Ada"), limit=20)
first = await repository.find_one(User.active.is_(True))
total = await repository.count(User.active.is_(True))
exists = await repository.exists(User.email == email)

limitoffset 不能为负数;limit=0 固定返回空列表。

安全更新与删除

update()remove() 必须显式提供查询条件,避免遗漏参数时修改全部记录。

from ormate import and_, eq

await repository.update(eq("status", "draft"), {"status": "review"})
await repository.remove(eq("status", "expired"))

# 明确匹配全部记录
await repository.update(and_(), {"status": "archived"})

空更新对象和未知存储字段会立即抛出 ValueError

原生命令

result = await repository.execute(statement, params={"status": "active"})

原生命令不承诺跨 Adapter 可移植,应当只用于明确的后端能力。

ESC

输入关键词开始搜索文档。

已复制到剪贴板