py2neo merge报错:Primary label and primary key are required for MERGE operation

安装了最新版的py2neo使用的时候,发现merg报错了,

说没有提供两个关键字参数,在代码中用法如下:

user = Node("User", name=user)
repo = Node("Repo", name=repo)
rel = Relationship(user, rel_type, repo)
g.merge(rel)

网上查了下基本都是这样的用法,于是怀疑是不是版本方面的问题,经过尝试发现版本3.0是可以的。

所以如果有需要可以重装一下py2ney即可。

pip uninstall py2neo
pip install py2neo==3.1.2

新版merge如何使用?

先看看官方文档怎么描述的:https://py2neo.org/2020.0/database/work.html#py2neo.database.work.Transaction.merge

更新后的merge函数有三个参数:subgraph,primary_label,primary_key。
这里subgraph可以是节点也可以是关系,也可以是个复杂的图。
merge会根据后面的两个参数:primary_labelprimary_key来确定这个subgraph会被合并到哪个元素上。

以merge节点为示例:

from py2neo import Graph, Node
g = Graph()
# 先创建一个对应的node节点
a = Node("Movie", id=123, name="Alice", type="soup")
# 指定要merge的类型和参考属性,即这里name属性一致的person就认为是相同节点,不考虑type等
g.merge(a, "Movie", "name")

另外需要注意的是,py2neo中的merge与原生cypher中的merge有所不同,cypher中会判断是否为同一个节点,是则合并,否则创建。而在py2neo中,是则覆盖,否则创建。


考虑到有时需要指定多个键值,但经过测试merge函数似乎不太支持,这种情况就只有使用run函数,执行原生cypher语句了。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值