py2neo merge error.png

安装了最新版的py2neo使用的时候,发现merge报错了,说没有提供两个关键字参数,在代码中用法如下:

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

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

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


新版merge如何使用?

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

更新后的merge函数有三个参数:subgraph,primary_label,primary_key。

这里subgraph可以是节点也可以是关系,也可以是个复杂的图。

merge会根据后面的两个参数:primary_label和primary_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语句了。


SOURCE:CSDN