redisgraph-释放查询批

jv2fixgn  于 2021-06-09  发布在  Redis
关注(0)|答案(2)|浏览(504)

我想用pythonapi在redisgraph中执行一批查询,以加快创建大知识图的速度。
在neo4j中,unwind命令可由neo4jpythonapi使用,并允许并行化查询。在这个片段中,您可以看到pythonapi是如何支持展开的 run 方法需要 batch 作为参数。 batch 是一个字典列表。每本字典都有 head_id , tail_id 以及 properties 作为钥匙。

with session.begin_transaction() as tx:  # In this transaction relationships are inserted in the database
    cypher_query = 'UNWIND $batch as row ' \
    'MATCH (head:Node) WHERE head.id = row.head_id ' \
    'MATCH (tail:Node) WHERE tail.id = row.tail_id ' \
    'CREATE (head)-[rel:RELATIONSHIP]->(tail) ' \
    'SET rel += row.properties'

     tx.run(cypher_query, batch=batch)

在redisgraph中,也可以使用unwind(因为它是一个cypher命令)。但是,我不知道如何在python api中传递批处理:

cypher_query = 'UNWIND $batch as row ' \
        'MATCH (head:Node) WHERE head.id = row.head_id ' \
        'MATCH (tail:Node) WHERE tail.id = row.tail_id ' \
        'CREATE (head)-[rel:RELATIONSHIP]->(tail) ' \
        'SET rel += row.properties'
r = redis.StrictRedis()
r.execute_command('GRAPH.QUERY', graph_name, cypher_query)  #No batch can be passed!!

你知道解决办法吗?谢谢。

zf9nrax1

zf9nrax11#

以下是redislabs开发团队的答案:
github.com/redisgraph/redisgraph/issues/1293
到目前为止,该功能还不受支持,但将在将来引入。

ugmeyewa

ugmeyewa2#

这个 redisgraph-py 自述文件演示了如何通过 query() 方法:

...
params = {'purpose':"pleasure"}
query = """MATCH (p:person)-[v:visited {purpose:$purpose}]->(c:country)
     RETURN p.name, p.age, v.purpose, c.name"""

result = redis_graph.query(query, params)
...

如果你真的需要 execute_command() 相反,你可以看看 query() 已实施。

相关问题