石墨烯肾素集成

graphene-pydantic的Python项目详细描述


Graphene Logo石墨烯肾素Build statusPyPI versionCoverage Status

用于GraphenePydantic集成。

安装

pip install "graphene-pydantic"

示例

下面是一个简单的pydantic模型:

importpydanticclassPersonModel(pydantic.BaseModel):id:uuid.UUIDfirst_name:strlast_name:str

要为它创建graphql模式,您只需编写以下代码:

importgraphenefromgraphene_pydanticimportPydanticObjectTypeclassPerson(PydanticObjectType):classMeta:model=PersonModel# only return specified fieldsonly_fields=("name",)# exclude specified fieldsexclude_fields=("id",)classQuery(graphene.ObjectType):people=graphene.List(Person)defresolve_people(self,info):returnget_people()# function returning `PersonModel`sschema=graphene.Schema(query=Query)

然后您可以简单地查询模式:

query='''    query {      people {        firstName,        lastName      }    }'''result=schema.execute(query)

转发声明和循环引用

graphene_pydantic支持正向声明和循环引用,但在执行graphql查询之前,需要调用resolve_placeholders()方法以确保类型完全更新。例如:

classNodeModel(BaseModel):id:intname:strlabels:'LabelsModel'classLabelsModel(BaseModel):node:NodeModellabels:typing.List[str]classNode(PydanticObjectType):classMeta:model=NodeModelclassLabels(PydanticObjectType):classMeta:model=LabelsModelNode.resolve_placeholders()# make the `labels` field workLabels.resolve_placeholders()# make the `node` field work

完整示例

请参阅the examples directory了解更多信息。

许可证

这个项目在Apache License之下。

第三方代码

此项目依赖于受Third Party Licenses中所述许可证约束的第三方代码。

贡献

请看Contributing Guide。请注意,您必须在CLA上签名。

注意事项

请注意,尽管pydantic对保存映射的字段(例如字典)非常满意,因为GraphQL's type system doesn't have them这些字段不能导出为石墨烯类型。例如,这将失败,并出现错误Don't know how to handle mappings in Graphene

importtypingfromgraphene_pydanticimportPydanticObjectTypeclassPet:passclassPerson:name:strpets_by_name:typing.Dict[str,Pet]classGraphQLPerson(PydanticObjectType):classMeta:model=Person

但是,请注意,如果使用exclude_fieldsonly_fields排除这些值,则不会有问题:

classGraphQLPerson(PydanticObjectType):classMeta:model=Personexclude_fields=("pets_by_name",)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Android应用程序无法打开   java无法使用SQL工具查询现有Ignite缓存   雅加达ee全局Java Servlet过滤器,是否可能?   java方法参数扩展类实现接口   如何在SilkTest中获取Java Swing应用程序对象的属性值?   java懒人日志   java jspService(HttpServletRequest,HttpServletResponse)在Spring引导(嵌入式Tomcat)中超过了65535字节的限制   在Java8中,从基于多个属性的对象列表中删除重复项   java通过从Android到Spring的改造发送图像文件   java使用JAXB创建空对象解组空元素   java RecyclerView错误未连接适配器;跳过布局和设置OnClickListener   创建SQLite数据库时出现java错误:“安卓.database.SQLite.SQLiteException:near(9598)”?   从布局XML自动生成“视图”类型的类字段的java工具?   java Swing从5倒计时到0   java Apache HttpClient在尝试下载文件时发生握手异常时引发远程主机关闭连接   java如何在spring上从json中的对象获取信息   java将Google标签管理器添加到Magnolia CMS   添加新库时java清单合并失败