图形ql DSL

graphql-dsl的Python项目详细描述


https://github.com/avanov/graphql-dsl/workflows/GitHub%20CI/badge.svg?branch=develophttps://travis-ci.org/avanov/graphql-dsl.svg?branch=develophttps://circleci.com/gh/avanov/graphql-dsl/tree/develop.svg?style=svghttps://coveralls.io/repos/github/avanov/graphql-dsl/badge.svg?branch=developRequirements StatusDocumentation StatusLatest PyPI Release

通过定义Python类型组合GraphQL查询

pip install graphql-dsl

让我们以一个手工编写的GraphQL query

^{pr2}$

使用graphql-dsl,可以使用以下Python片段构造类似的查询:

fromtypingimportNamedTuplefromgraphql_dslimport*classHero(NamedTuple):name:strclassDroid(NamedTuple):name:strclassHeroAndDroid(NamedTuple):hero:Herodroid:DroidclassInput(NamedTuple):droid_id:IDq=GQL(QUERY|HeroAndDroid|WITH|Input|PASS|Input.droid_id*TO*HeroAndDroid.droid*AS*'id')print(q.query)

输出将是:

query HeroAndDroid($droidId:ID!){hero{name}droid(id:$droidId){name}}

查询生成器同时支持NamedTuple@dataclass类型,但后者有一点不同 字段引用语法(因为dataclasses不定义类级别的字段getter):

fromdataclassesimportdataclassfromgraphql_dslimport*@dataclassclassHero:name:str@dataclassclassDroid:name:str@dataclassclassHeroAndDroid:hero:Herodroid:Droid@dataclassclassInput:droid_id:IDq=GQL(QUERY|HeroAndDroid|WITH|Input|PASS|(Input,'droid_id')*TO*(HeroAndDroid,'droid')*AS*'id')

Official Documentation了解更多信息。在

测试套件

测试环境基于Nix。在

nix-shell
pytest

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

推荐PyPI第三方库


热门话题
如何使用Java中的扫描仪读取文本文件中的特定字符?   java如果我们在hibernate中开始事务但不提交它,会发生什么?   Azure CosmosDB Java Springboot中的无服务器帐户不支持spring boot设置提供吞吐量或容器自动导航   附加到新对象的Java注释?   java如何将自定义文本视图添加到。在Kotlin中添加通知操作   java Shibboleth添加_OpenSAMLcookies,导致HTTP头大小>8k   分布式传感器数据(~40Hz)的高效Java观测器设计   java如何在while循环外声明数组,但在while循环中初始化它?   用@XmlElementRef注释的java元素没有显示在JAXB编组字符串中?   java替换二维数组的值   java如何在任务栏上创建Windows7加载栏   java如何在组件注释bean中使用会话或RequestScope bean?   java netbeans freermarker插件错误:在实现版本中请求netbeans桥的插件Lexer   java谷歌地图方向。加载失败,返回服务器错误   java当我试图递归地计算两个值之间的整数之和时,为什么结果返回一个奇怪的值?   java如何通过html文件的用户获取运行时输入,以使用Jsoup进行解析?