py2neo graph.merge()的行为与Cypher MERGE不同吗?

因此,对于一个空数据库,MERGE(N1:A {name:“ A”})-[:r]->(N2:B {name:“ B”})将创建两个节点N1和N2,其边缘为r它们之间.下面的python代码却不这样做…但是为什么呢?应该不是吗?

from py2neo import Graph, authenticate, rel, Node

graph = Graph()

# set up authentication parameters
authenticate("localhost:7474", , )

# clear the data base
graph.delete_all()

graph.merge(rel(Node("A" , name="A"), "r", Node("B" , name="B")))

运行该脚本将导致数据库仍然为空.为什么会这样,又如何不使用graph.cypher.execute(“ MERGE …”)从py2neo中获得Cypher合并行为?

最佳答案

在Py2neo中,graph.merge通过标签和(可选)属性来匹配或创建单个节点,在此您希望在整个模式(节点,关系,其他节点)上进行合并.

Cypher外部的Py2neo中似乎不支持您用于Cypher MERGE语句的模式.