跳转至
开源项目 · Pydantic v2 · Python 3.10+

声明式数据组装

Python 的 BFF 工具。声明式组装复杂嵌套 API,零 N+1 查询,零样板代码。

pip install pydantic-resolve

几行代码解决 N+1 问题

用声明式数据加载替代手动循环查询。

Before — N+1 问题
# Sprint has 10 tasks, each needs owner
for task in sprint.tasks:
    task.owner = await get_user(task.owner_id)
 # 10 queries!
After — pydantic-resolve
class TaskView(BaseModel):
    owner_id: int
    owner: Optional[UserView] = None

    def resolve_owner(self, loader=Loader(user_loader)):
        return loader.load(self.owner_id)
 # 1 query!

数据组装的全套工具

从加载关联数据到生成 GraphQL API — 一个库全覆盖。

批量加载

通过 DataLoader 模式自动批量查询,100 次查询变 1 次。

后处理

在嵌套数据就绪后计算派生字段:计数、聚合、格式化。

跨层数据流

ExposeAs / SendTo / Collector,无需手写遍历逻辑即可跨层传递数据。

ER 图 + AutoLoad

集中管理关系声明,跨模型复用,同时驱动 GraphQL 和 MCP。

GraphQL 生成

从 ER 图自动生成 GraphQL schema 和 resolver。

MCP 服务

通过 MCP 协议将 GraphQL API 暴露给 AI 代理。

循序渐进的学习路径

从简单开始,按需扩展。每个概念都建立在前一个之上。

1 resolve_*
2 嵌套树
3 post_*
4 跨层数据流
5 ERD + AutoLoad
6 GraphQL / MCP

贴合整洁架构

ER 图同时充当实体层和用例层,干净地隔离数据库实现。

实体层 + 用例层

ER Diagram 定义实体及其关系,天然充当领域模型和用例边界。

数据库无关

Loader 抽象了数据源。从 SQLAlchemy 切换到 Django 或 Tortoise ORM,模型层无需改动。

多呈现层

一份 ERD 同时驱动 REST API 响应、GraphQL 查询和 MCP 服务,零重复。

为你的技术栈而建

与你现有的框架和 ORM 无缝集成。

准备好消灭 N+1 查询了吗?

从一个 resolve 方法开始,准备好了再扩展到 ER 图。