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

时间:2015-10-21 19:31:59

标签: python neo4j cypher

我正在使用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"

请告知

2 个答案:

答案 0 :(得分:1)

白色空间在Cypher查询中很重要。确保您的查询实际上在Neo4j shell中运行,然后再将其放入Python包装器中。

答案 1 :(得分:0)

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

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。应使用标签来标识节点的类型或“类”,例如“人”或“事件”等。