在 Neo4j 中将参数作为字典传递给 tx.run
Passing parameters as dict to tx.run in Neo4j
我正在尝试编写一个通用函数来获取 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()...任何人都可以让我直截了当吗?谢谢!
不能将参数用作标签名称
https://neo4j.com/docs/cypher-manual/current/syntax/parameters/
您需要使用所需的标签和安全检查创建您自己的生成查询。
但是,您可能需要查看 apoc 插件,它可能允许这样做。
我正在尝试编写一个通用函数来获取 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()...任何人都可以让我直截了当吗?谢谢!
不能将参数用作标签名称
https://neo4j.com/docs/cypher-manual/current/syntax/parameters/
您需要使用所需的标签和安全检查创建您自己的生成查询。
但是,您可能需要查看 apoc 插件,它可能允许这样做。