首页 > 解决方案 > 在 Neo4j 中将参数作为 dict 传递给 tx.run

问题描述

我正在尝试编写一个通用函数来获取 Cypher 查询和参数字典,并能够动态运行任何给定的查询。我所拥有的看起来像这样:

def _run_cypher(tx, cypher, params = {}):
    results = []
    tx.run(cypher, parameters=params)

使用如下所示的查询:

'CREATE INDEX ON :$label(filemd5)'

并将参数传递为

params = {'label': label}

我收到此错误:

Invalid input '$': expected whitespace or a label name (line 1, column 18 (offset: 17))
"CREATE INDEX ON :$label(filemd5)"

要么我错了,要么在这种情况下你不能将命名参数的字典传递给 tx.run()...谁能让我直截了当?谢谢!

标签: pythonneo4jneo4j-python-driver

解决方案


您不能将参数用作标签名称

https://neo4j.com/docs/cypher-manual/current/syntax/parameters/

您将需要使用所需的标签和安全检查创建自己的生成查询。

但是,您可能想查看 apoc 插件,它可能允许这样做。


推荐阅读