我想用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!!
你知道解决办法吗?谢谢。
2条答案
按热度按时间zf9nrax11#
以下是redislabs开发团队的答案:
github.com/redisgraph/redisgraph/issues/1293
到目前为止,该功能还不受支持,但将在将来引入。
ugmeyewa2#
这个
redisgraph-py
自述文件演示了如何通过query()
方法:如果你真的需要
execute_command()
相反,你可以看看query()
已实施。