Neo4j实战-使用python语言操作neo4j数据库

时间:2022-12-12 18:03:22

参考博客http://www.jianshu.com/p/a2497a33390f  py2neo——Neo4j&python的配合使用

通过python面向Neo4j的库来对Neo4j进行简单地操作,包括:

  • 连接Neo4j数据库
  • 节点的建立
  • 节点之间关系的建立
  • 关系属性的赋值以及属性值的更新
  • 通过属性值查找节点/关系
  • 通过节点/关系查找相关联的节点/关系
1.首先需要安装py2neo,建立数据库连接
安装完成之后,在python中调用py2neo即可,常用的有Graph,Node,Relationship

连接Neo4j的方法很简单:


test_graph = Graph(
"http://localhost:7474",
username="neo4j",
password="neo4j"
)
test_graph就是我们建立好的Neo4j连接


2.节点的建立

建立节点的时候要定义它的节点标签(label)以及一些基本属性(property)

以下代码建立了两个测试节点


test_node_1 = Node(label = "Person",name = "test_node_1")
test_node_2 = Node(label = "Person",name = "test_node_2")
test_graph.create(test_node_1)
test_graph.create(test_node_2)

3.节点关系的建立

node_1_call_node_2 = Relationship(test_node_1,'CALL',test_node_2)
node_1_call_node_2['count'] = 1
node_2_call_node_1 = Relationship(test_node_2,'CALL',test_node_1)
node_2_call_node_1['count'] = 2
test_graph.create(node_1_call_node_2)
test_graph.create(node_2_call_node_1)

如果建立关系的时候,起始节点或者结束节点不存在,则在建立关系的同时建立这个节点。

4.更新关系或节点的属性

node_1_call_node_2['count']+=1
test_graph.push(node_1_call_node_2)

将更新的关系或节点push提交

5.通过属性值来查找节点和关系

通过find和find_one函数,可以根据类型和属性、属性值来查找节点和关系。
示例如下:

find_code_1 = test_graph.find_one(
label="Person",
property_key="name",
property_value="test_node_1"
)
print find_code_1['name']

find和find_one的区别在于:

find_one的返回结果是一个具体的节点/关系,可以直接查看它的属性和值。如果没有这个节点/关系,返回None。

find查找的结果是一个游标,可以通过循环取到所找到的所有节点/关系。

6.通过节点/关系查找相关联的节点/关系

find_relationship = test_graph.match_one(start_node=find_code_1,end_node=find_code_3,bidirectional=False)
print find_relationship

bidirectional参数的意义是指关系是否可以双向。
如果为False,则起始节点必须为start_node,结束节点必须为end_node。如果有Relationship参数,则一定按照Relationship对应的方向。
如果为True,则不需要关心方向问题,会把两个方向的数据都返回。