graphql-core:Python 的 GraphQL 官方实现
graphql-core:Python 的 GraphQL 官方实现
graphql-core 在 GitHub 上已经拿到 528 Star。
这是 GraphQL.js 的 Python 移植版,由 graphql-python 组织维护。如果你需要在 Python 项目里搭 GraphQL 服务,这个库就是底层根基。

1、 这玩意儿是干嘛的
graphql-core 只做一件事:在 Python 里完整实现 GraphQL 规范。
它是 Facebook 官方 GraphQL.js 的 Python 3.7+ 移植版,代码层面尽量贴近原版,同时保持 Pythonic 的 API 风格。库里有完整的类型系统,支持构建 Schema、执行查询、校验语法,同步异步都能跑。
测试套件覆盖了 2600 多个单元测试,覆盖率 100%,和 GraphQL.js 的测试用例一一对应。
2、 为什么要用它
Python 生态里做 GraphQL 的上层框架不少,Graphene、Ariadne、Strawberry 都是大家熟悉的。这些框架的底层执行引擎,用的都是 graphql-core。
它相当于 Python GraphQL 世界的地基。直接用它,你可以从零拼出一个 GraphQL 服务;用它之上的框架,则省掉很多样板代码。

3、 基本用法
安装:
pip install graphql-core
定义一个 Schema:
from graphql import GraphQLSchema, GraphQLObjectType, GraphQLField, GraphQLString
schema = GraphQLSchema(
query=GraphQLObjectType(
name='RootQueryType',
fields={
'hello': GraphQLField(
GraphQLString,
resolve=lambda obj, info: 'world')
}))
执行查询:
from graphql import graphql_sync
result = graphql_sync(schema, '{ hello }')
print(result)
输出:
ExecutionResult(data={'hello': 'world'}, errors=None)
异步查询用 graphql() 代替 graphql_sync(),配合 async/await 写 resolver 就行。
4、 版本与兼容
当前稳定版 3.2.8 对齐 GraphQL.js 16.9.0,支持 Python 3.7 到 3.14。3.3 的 alpha 版已经跟进到 GraphQL.js 17.0.0a7,最低要求 Python 3.10。
需要留意的是,graphql-core 没有采用 SemVer。GraphQL.js 的主版本变动会映射到它的次版本,所以次版本升级可能带 breaking change。建议依赖里写 ~= 3.2.0 这样的版本约束。
5、 适合哪些人用
- 要在 Python 项目里直接搭 GraphQL 服务的后端开发者
- 正在用 Graphene、Ariadne 或 Strawberry,想了解底层执行原理的人
- 需要完整类型提示和严格测试覆盖的生产环境
发者
- 正在用 Graphene、Ariadne 或 Strawberry,想了解底层执行原理的人
- 需要完整类型提示和严格测试覆盖的生产环境
更多推荐

所有评论(0)