实现Graph APIs的库
项目描述
Hiku是一个实现Graph APIs的库。包括必要的GraphQL支持。
安装
$ pip3 install hiku
通过发布候选版本频繁发布错误修复和新功能
$ pip3 install --upgrade --pre hiku
文档
阅读 文档
可选依赖项
graphql-core - 用于GraphQL支持
protobuf - 用于Protobuf支持
sqlalchemy - 作为数据源使用SQLAlchemy支持
aiopg - 使用 aiopg 提供异步PostgreSQL支持
asyncpg - 使用 asyncpg 提供异步PostgreSQL支持
prometheus-client - 提供Prometheus指标支持
sentry-sdk - 提供Sentry跟踪支持
亮点
不耦合到特定的查询语言
结果序列化具有灵活性,包括二进制格式
原生使用规范化的结果表示,不重复数据
支持所有并发模型:协程、线程
并行查询执行
客户端与服务器之间以及服务器与数据库之间无数据未取或超取
设计上无N+1问题
引入了“双层图”的概念,以解耦数据源和业务逻辑
快速示例
图定义
from hiku.graph import Graph, Root, Node, Field, Link
from hiku.types import String, Sequence, TypeRef
def characters_data(fields, ids):
data = {
1: {'name': 'James T. Kirk', 'species': 'Human'},
2: {'name': 'Spock', 'species': 'Vulcan/Human'},
3: {'name': 'Leonard McCoy', 'species': 'Human'},
}
return [[data[i][f.name] for f in fields] for i in ids]
def characters_link():
return [1, 2, 3]
GRAPH = Graph([
Node('Character', [
Field('name', String, characters_data),
Field('species', String, characters_data),
]),
Root([
Link('characters', Sequence[TypeRef['Character']],
characters_link, requires=None),
]),
])
查询
from hiku.engine import Engine
from hiku.builder import Q, build
from hiku.executors.sync import SyncExecutor
engine = Engine(SyncExecutor())
result = engine.execute_query(GRAPH, build([
Q.characters[
Q.name,
Q.species,
],
]))
# use result in your code
for character in result.characters:
print(character.name, '-', character.species)
输出
James T. Kirk - Human
Spock - Vulcan/Human
Leonard McCoy - Human
贡献
使用Tox来测试和检查您的更改。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
hiku-0.7.5.tar.gz (88.4 kB 查看哈希值)
构建分发
hiku-0.7.5-py3-none-any.whl (113.8 kB 查看哈希值)
关闭
hiku-0.7.5.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5863138346489dc776a603bb18551a5133f5381213281032eaf04bac291b1f7e |
|
MD5 | 2f2017422f37201192ee03a55997d271 |
|
BLAKE2b-256 | 3dc3bd89989cf2058bbf6b26a27d8edf3abcb562b014b0572c01589f564408c7 |