繁体   English   中英

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

[英]I am using py2neo to connect python to neo4j database

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

请指教

在Cypher查询中,空格很重要。 在将查询放入Python包装程序之前,请确保您的查询实际上在Neo4j Shell中运行。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM