我正在使用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"
请告知
答案 0 :(得分:1)
白色空间在Cypher查询中很重要。确保您的查询实际上在Neo4j shell中运行,然后再将其放入Python包装器中。
答案 1 :(得分:0)
让我们看一下您正在执行的查询:
MATCH (d:node00)
WHERE d.name IN {x}
SET d:{ID}
RETURN d.name
参数x
可能是一个字符串数组,参数ID
是一个字符串。
以下是需要考虑的一些要点:
SET d:{ID}
条款将不起作用。相反,在python脚本中使用字符串连接将标签包含在字符串查询中,而不是参数:"...SET d:" + str(newLabel) + ...
x
实际上是一个字符串数组,并确保条款WHERE d.name IN {x}
(IN
和{x}
之间的空格)