py2neo处理neo4j数据库获取节点对象
对于neo4j,尤其是版本4以上的neo4j,在使用py2neo对数据库进行match匹配选择节点的时候,数据库中的节点对象不能使用以前的方式进行获取了,比如下面这样:
q = db.nodes.match("法人",法人=row[2]).first()
会出现以下报错信息:
将.first()去掉,查看一下对应的数据和数据类型
q = db.nodes.match("法人",法人=row[2])
print(q)
print(type(q))
显示的数据和相应的数据类型如下所示,可以看出并不是一个节点对象(node):
原因
neo4j在4.0版本之后 弃用了param,py2neo 解析代码时,仍然把属性解析为param,导致失效,可以考虑用以下的方式获取已有节点对象,这样可以将节点创建和关系创建分开进行。
q = db.nodes.match("法人").where("_.法人="+"'"+row[2]+"'").first()
print(type(q))
如下显示其类别为py2neo.data.Node,意味着可以在此基础上对获取的对象进行下一步的操作了。