。本文目录
Python连接neo4j
创建节点
2.1 删除数据库中以往的图
2.2 创建人物节点
2.3 创建工作节点和地点节点
创建关系
3.1 创建人物之间的关系
3.2 创建人物和居住地址之间的关系
3.3 创建人物和职业之间的关系
查询
更新图形
一、Python连接neo4j

使用Python调用neo4j,需要安装py2neo库,详细安装过程见:Python安装py2neo库 。
安装好py2neo库后,可执行如下语句用Python连接neo4j(注: username和password需换成你的注册用户名和密码)。
from py2neo import Graph, Node, Relationshipgraph = Graph("http://localhost:7474",username="neo4j",password="123456")
二、创建节点

为便于理解,本文关系数据采用家有儿女中的人物关系。
1 删除数据库中以往的图,确保在一个空白的环境中进行操作
graph.delete_all()
该语句可以删除neo4j数据库中的所有图,确保在一个空白的环境中进行操作,避免以往项目数据对当前项目的干扰,但不是必须执行的语句。
node_1 = Node("person", name = "夏东海")graph.create(node_1)
match (n) return n
创建家有儿女中主要人物的节点
node_2 = Node("person", name = "刘梅")node_3 = Node("person", name = "刘星")node_4 = Node("person", name = "夏雪")node_5 = Node("person", name = "夏雨")node_6 = Node("person", name = "胡统一")node_7 = Node("person", name = "玛丽")node_8 = Node("person", name = "戴明明")node_9 = Node("person", name = "戴天高")node_10 = Node("person", name = "胖婶")node_11 = Node("person", name = "夏祥")graph.create(node_2)graph.create(node_3)graph.create(node_4)graph.create(node_5)graph.create(node_6)graph.create(node_7)graph.create(node_8)graph.create(node_9)graph.create(node_10)graph.create(node_11)
在noe4j中运行如下语句
match(n) return n得到结果如下:

3 创建工作节点和地点节点
node_12 = Node("job", name = "护士长")node_13 = Node("job", name = "学生")node_14 = Node("job", name = "编导")node_15 = Node("job", name = "无业游民")node_16 = Node("job", name = "社区工作人员")node_17 = Node("job", name = "无业游民")node_18 = Node("location", country = "中国", city = '北京')node_19 = Node("location", country = "美国", city = '纽约')graph.create(node_12)graph.create(node_13)graph.create(node_14)graph.create(node_15)graph.create(node_16)graph.create(node_17)graph.create(node_18)graph.create(node_19)
运行如下语句
match(n) return n得到结果如下:


1 创建人物之间的关系
node_1_call_node_2 = Relationship(node_1,'丈夫',node_2)graph.create(node_1_call_node_2)
该语句表示node_1是node_2的丈夫,其中node_1代表夏东海,node_2代表刘梅。

r1 = Relationship(Node("person", name = "刘梅"),'妈妈',Node("person", name = "刘星"))graph.create(r1)

r1 = Relationship(Node("person", name = "刘梅"),'妈妈',Node("person", name = "刘星"))r2 = Relationship(Node("person", name = "刘星"),'儿子',Node("person", name = "刘梅"))graph.create(r1)graph.create(r2)

node_1 = Node("person", name = "夏东海")node_2 = Node("person", name = "刘梅")r1 = Relationship(node_1,'丈夫',node_2)r2 = Relationship(node_2,'妻子',node_1)graph.create(r1)graph.create(r2)

r3 = graph.create(Relationship(node_1,'继父',node_3))r4 = graph.create(Relationship(node_3,'继子',node_1))r5 = graph.create(Relationship(node_1,'父亲',node_4))r6 = graph.create(Relationship(node_4,'女儿',node_1))r7 = graph.create(Relationship(node_1,'父亲',node_5))r8 = graph.create(Relationship(node_5,'儿子',node_1))r9 = graph.create(Relationship(node_1,'前夫',node_7))r10 = graph.create(Relationship(node_7,'前妻',node_1))r11 = graph.create(Relationship(node_1,'儿子',node_11))r12 = graph.create(Relationship(node_11,'父亲',node_1))r13 = graph.create(Relationship(node_2,'母亲',node_3))r14 = graph.create(Relationship(node_3,'儿子',node_2))r15 = graph.create(Relationship(node_2,'继母',node_4))r16 = graph.create(Relationship(node_4,'继女',node_2))r17 = graph.create(Relationship(node_2,'继母',node_5))r18 = graph.create(Relationship(node_5,'继子',node_2))r19 = graph.create(Relationship(node_2,'前妻',node_6))r20 = graph.create(Relationship(node_6,'前夫',node_2))r21 = graph.create(Relationship(node_2,'同学',node_9))r22 = graph.create(Relationship(node_9,'同学',node_2))r23 = graph.create(Relationship(node_2,'邻居',node_10))r24 = graph.create(Relationship(node_10,'邻居',node_2))r25 = graph.create(Relationship(node_3,'弟弟',node_4))r26 = graph.create(Relationship(node_4,'姐姐',node_3))r27 = graph.create(Relationship(node_3,'哥哥',node_5))r28 = graph.create(Relationship(node_5,'弟弟',node_3))r29 = graph.create(Relationship(node_3,'儿子',node_6))r30 = graph.create(Relationship(node_6,'父亲',node_3))r31 = graph.create(Relationship(node_4,'姐姐',node_5))r32 = graph.create(Relationship(node_5,'弟弟',node_4))r33 = graph.create(Relationship(node_4,'女儿',node_7))r34 = graph.create(Relationship(node_7,'母亲',node_4))r35 = graph.create(Relationship(node_4,'朋友',node_8))r36 = graph.create(Relationship(node_8,'朋友',node_4))r37 = graph.create(Relationship(node_5,'儿子',node_7))r38 = graph.create(Relationship(node_7,'母亲',node_5))r39 = graph.create(Relationship(node_8,'女儿',node_9))r40 = graph.create(Relationship(node_9,'父亲',node_8))
match(n) return n得到结果如下:

创建家有儿女中主要人物的居住地址关系
r41 = graph.create(Relationship(node_1,'居住地',node_18))r42 = graph.create(Relationship(node_2,'居住地',node_18))r43 = graph.create(Relationship(node_3,'居住地',node_18))r44 = graph.create(Relationship(node_4,'居住地',node_18))r45 = graph.create(Relationship(node_5,'居住地',node_18))r46 = graph.create(Relationship(node_7,'居住地',node_19))

创建家有儿女中主要人物职业关系
r47 = graph.create(Relationship(node_1,'职业',node_14))r48 = graph.create(Relationship(node_2,'职业',node_12))r49 = graph.create(Relationship(node_3,'职业',node_13))r50 = graph.create(Relationship(node_4,'职业',node_13))r51 = graph.create(Relationship(node_5,'职业',node_13))r52 = graph.create(Relationship(node_8,'职业',node_13))r53 = graph.create(Relationship(node_6,'职业',node_15))r54 = graph.create(Relationship(node_10,'职业',node_16))
得到结果如下:

至此,基于家有儿女中人物关系的关联图谱已经建好,接下来讲一讲查询。

1 查节点
import pandas as pdprint(pd.DataFrame(graph.nodes.match('person')))
得到结果如下:

2 查关系
print(list(graph.match(r_type="父亲")))

1 为节点增加属性
node_1['sex'] = '男'graph.push(node_1)
原始

node_20 = Node("person", name = "夏雪")node_21 = Node("person", name = "戴明明")node_20_call_node_21 = Relationship(node_20,'朋友',node_21)graph.create(node_20_call_node_21)node_20_call_node_21['程度'] = '普通'graph.push(node_20_call_node_21)

增加属性程度
3 删除某个节点或关系
graph.delete(node_3)graph.delete(r1)
用delete语句删除之前创建的node_3节点和r1关系。
Python调用py2neo创建简单关联图谱的基本语句就是上面这些啦
,大家入门愉快
。
https://zhuanlan.zhihu.com/p/83032004https://https://zhuanlan.zhihu.com/p/82840448?utm_source=wechat_session&utm_medium=social&utm_oi=1090367802518536192
往期回顾:


扫一扫关注我
19967879837
投稿微信号、手机号
原文作者:阿黎逸阳的代码;如有侵权,请联系管理员删除。