python的graphql实现

graphql-core的Python项目详细描述


graphql核心

python的graphql。

此库是python的graphql-js端口,当前是最新版本0.6.0

PyPI versionBuild StatusCoverage StatusPublic Slack Discussion

请参阅http://graphql.org/http://graphql.org/docs/api-reference-graphql/

要问问题,请问Stack Overflow

开始

graphql语言的概述可以在 README对于 Specification for GraphQL

概述描述了一个简单的GETQL示例集,该实例以^ {A12}的形式存在。 在这个仓库里。开始的一个好方法是遍历自述文件和相应的测试 同时。

使用graphql core

从PIP安装:

pip install graphql-core

js提供了两个重要的功能:构建类型模式,以及 提供针对该类型架构的查询。

首先,构建一个映射到代码基的graphql类型模式。

fromgraphqlimport(graphql,GraphQLSchema,GraphQLObjectType,GraphQLField,GraphQLString)schema=GraphQLSchema(query=GraphQLObjectType(name='RootQueryType',fields={'hello':GraphQLField(type=GraphQLString,resolver=lambda*_:'world')}))

这定义了一个简单的模式,其中有一个类型和一个字段,可以解析 固定值。函数可以返回一个值,一个承诺, 或者一系列的承诺。上面有一个更复杂的例子 级别tests目录。

然后,根据该类型模式提供查询结果。

query='{ hello }'result=graphql(schema,query)# Prints# {'hello': 'world'} (as OrderedDict)printresult.data

这将运行一个查询,获取定义的一个字段。graphql函数将 首先确保查询在语法和语义上有效,然后再执行 否则会报告错误。

query='{ boyhowdy }'result=graphql(schema,query)# Prints# [GraphQLError('Cannot query field "boyhowdy" on type "RootQueryType".',)]printresult.errors

执行人

默认情况下,graphql查询是同步执行的(使用SyncExecutor)。 但是,如果要并行解析字段,则可以使用以下执行器:

  • graphql.execution.executors.asyncio.AsyncioExecutor:这个执行器执行python异步事件循环中的解析器。
  • graphql.execution.executors.gevent.GeventExecutor:这个执行器执行gevent事件循环中的解析器。
  • graphql.execution.executors.process.ProcessExecutor:这个执行器将每个解析器作为一个进程执行。
  • graphql.execution.executors.thread.ThreadExecutor:这个执行器执行线程中的每个解析器。
  • graphql.execution.executors.sync.SyncExecutor:这个执行器同步执行每个解析器(默认)。

用法

可以通过grapqhl.execution.execute函数中的executor关键字参数指定要使用的executor。

fromgraphql.execution.executeimportexecuteexecute(schema,ast,executor=SyncExecutor())

贡献

克隆此repo后,创建一个virtualenv,并确保通过运行以下命令安装依赖项:

virtualenv venv
source venv/bin/activate
pip install -e ".[test]"

写得好的测试和保持良好的测试覆盖率对这个项目很重要。开发时,运行新的和现有的测试:

py.test PATH/TO/MY/DIR/test_test.py # Single file
py.test PATH/TO/MY/DIR/ # All tests in directory

如果在代码中引入了用于调试的断点,请添加-s标志。 添加-v(“verbose”)标志以获得更详细的测试输出。对于更详细的输出,请使用-vv。 查看pytest documentation以获取更多选项和测试运行控件。

graphql core支持多种版本的python。为了确保更改不会破坏与这些版本的兼容性,我们使用tox为每个python版本创建virtualenv并使用该版本运行测试。要运行在tox.ini配置文件中定义的所有python版本,只需运行:

tox

如果希望针对tox.ini文件中定义的特定版本运行:

tox -e py36

tox只能使用系统中安装的python的任何版本。创建pull请求时,travis也将运行相同的测试并报告结果,因此不需要潜在的贡献者提前在自己的系统上安装python的每个版本。我们非常感谢打开的问题和拉请求,使GraphQL核心更加稳定和有用!

主要贡献者

许可证

MIT License

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

推荐PyPI第三方库


热门话题
java同时读取输入流   安卓中的java短信监听   java你能帮我弄清楚如何在我的测验程序中组织数据吗?   列表中的java对   Java中的异常重复   通过SSH | Netbeans进行java远程调试   JAVAutil。扫描程序Java扫描程序在循环后读取整数失败?   用于温度转换器的构造函数java基本访问器方法   java如何将地图封装到自定义对象中   java更改布局不透明度,Progressbar除外   在REST中将java对象转换为XML时出错   java Spring引导IllegalArgumentException:找不到类[org.hibernate.cfg.ImprovedNamingStrategy]]   java Spring REST API,响应中的自定义实体字段   java数据库将null返回给布尔变量   mysql如何在java中将“'”转换为“`”