我使用py2neo将python连接到neo4j数据库

2024-10-03 04:26:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用py2neo将python连接到neo4j数据库。那么我试图执行一个查询来设置一些节点的标签名,但是标签名是一个参数。这是我的密码

for nodeID in nodesIDs:
    nodes=nodesIDs[nodeID]
    r=graph.cypher.execute("MATCH (d:node00) WHERE d.name in{x} SET d:{ID} RETURN d.name",{"x":nodes,"ID":nodeID})
    print len(r)

但是这给我一个错误说"Invalid input '(': expected whitespace or a label name"

请告知


Tags: nameinid数据库密码for参数节点
2条回答

让我们看看您正在执行的查询:

MATCH (d:node00) 
WHERE d.name IN {x}
SET d:{ID}
RETURN d.name

其中参数x可能是一个字符串数组,而参数ID是一个字符串。在

以下是一些需要考虑的问题:

  1. 无法在Cypher查询中参数化节点标签。因此,子句SET d:{ID}将不起作用。相反,在python脚本中使用字符串连接将标签作为字符串查询的一部分而不是作为参数:"...SET d:" + str(newLabel) + ...
  2. 确保参数x实际上是一个字符串数组,并确保子句WHERE d.name IN {x}(在IN{x}之间的空格)中有适当的间距
  3. 最后,您可能需要重新考虑如何使用标签。看起来您将标签视为标识单个节点的ID。标签应用于标识节点的类型或“类”,如“人”或“事件”等

空格在Cypher查询中非常重要。在将查询放入Python包装器之前,请确保查询在neo4jshell中实际运行。在

相关问题 更多 >