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

标签 python merge neo4j cypher py2neo

因此,对于空数据库,MERGE (N1:A {name:"A"})-[:r]->(N2:B {name:"B"}) 将创建两个节点 N1N2,它们之间有一条边 r。然而,下面的 python 代码没有这样做...但是为什么呢?不应该吗?

from py2neo import Graph, authenticate, rel, Node

graph = Graph()

# set up authentication parameters
authenticate("localhost:7474", <user>, <password>)

# 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 MERGE 语句中使用的模式在 Cypher 之外的 Py2neo 中似乎不受支持。

关于python - py2neo graph.merge() 的行为与 Cypher MERGE 不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36103391/

相关文章:

python - 合并包含同一列的两个文件中的数据 - Python

java - 避免隐式急切加载集合 stub ?

neo4j - 创建的节点似乎没有添加到 neo4j 数据库中

java - Neo4j-ogm 中有关闭 Session 的 API 吗?

Python 查询对象不可序列化

python - 如何用非单词字符的替代单词替换完全匹配的印地语单词(如विषयों)

php - MySQL 将多个查询合并为一个

javascript - 如何合并由输入的 val 获取的 2 个对象

Python:搜索文本文件

python - 如何切片序列以获得最后一项?