neo4j - py2neo - 无法在创建时将参数放入关系中

Posted

技术标签:

【中文标题】neo4j - py2neo - 无法在创建时将参数放入关系中【英文标题】:neo4j - py2neo - Unable to place parameters into relationship on creation 【发布时间】:2017-02-07 03:16:25 【问题描述】:

如果我在 neo4j 数据库上运行我的 python 脚本,可以正常工作:

从 py2neo 导入节点、关系、图形、密码、身份验证 # 设置认证参数 验证(“本地主机:7474”,“用户”,“密码”) # 连接到经过身份验证的图形数据库 sgraph = Graph("http://localhost:7474/db/data/") a=raw_input("输入名称 A:") b=raw_input("输入名称 B:") 图 = 图() tx = graph.cypher.begin() tx.append("MATCH (c:Person name:a), (d:Person name:b) 创建 (c)-[:KNOWS]->(d)", a= a, b=b) tx.commit()

但是,当我尝试向关系添加参数时...:

a=raw_input("Input Name A: ")
b=raw_input("Input Name B: ")
z=raw_input("Input parameter of relationship z: ")
x=raw_input("Input parameter of relationship x: ")
graph = Graph()
tx = graph.cypher.begin()
tx.append("MATCH (c:Person name:a), (d:Person name:b) CREATE (c)-[:KNOWSlabelz:z,labelx:x]->(d)", a=a, b=b)
tx.commit()

我知道了:

tx.commit() 提交中的文件“/usr/local/lib/python2.7/dist-packages/py2neo/cypher/core.py”,第 333 行 返回 self.post(self.__commit 或 self.__begin_commit) 文件“/usr/local/lib/python2.7/dist-packages/py2neo/cypher/core.py”,第 288 行,在 post raise self.error_class.hydrate(error) py2neo.cypher.error.statement.ParameterMissing:需要一个名为 z 的参数

如何放置这些变量以避免错误? 提前致谢。

【问题讨论】:

您在查询结束时提供了ab 的参数,但您没有提供zx。只需添加它们。 你绝对正确,几分钟前测试我能够做到。抱歉打扰了。但我试图做的另一件事是将关系的标签作为参数引入,在本例中为“KNOWS”,即使包括在查询末尾也不起作用。 在这种情况下,使用字符串连接将关系类型动态添加到查询中可能是个好主意。或者,如果您安装 APOC 过程,则可以使用 apoc.create.relationship() 来创建关系,而不是使用 CREATE。这将让您为关系类型提供一个字符串。 【参考方案1】:

参数不能用作属性名称、关系类型 和标签:( link,

【讨论】:

以上是关于neo4j - py2neo - 无法在创建时将参数放入关系中的主要内容,如果未能解决你的问题,请参考以下文章

通过Py2neo在Neo4j中建立关系非常缓慢

使用py2neo(Neo4j)自动增加属性?

如何使用py2neo v4和Neo4j合并节点和关系

知识图谱Py2neo操作Neo4j使用教程

连接在py2neo中止

Py2neo成功连接Neo4j初探:Movie Graph