05_Python访问Neo4j数据库

在这里插入图片描述

博文配套视频课程:自然语言处理与知识图谱


驱动下载

任何编程语言在访问数据库时都需要下载对此数据库的驱动程序,驱动简单来说就是访问数据库的说明文档。而对于Python来说驱动可以通过pip官网进行获取

pip install py2neo==4.3.0   安装与Neo4j相同的版本,版本不匹配可能会导致连接异常

连接数据库

通过配置连接数据库4大参数来进行数据库连接,参数正确且neo4j服务器已经成功启动则会返回连接对象。后续可以通过连接对象来进行数据库的操作

from py2neo import Graph, Node, Relationship, Record

# 建立连接对象
graph = Graph("http://localhost:7474", username="neo4j", password="root")
# 删除所有实体
graph.delete_all()

创建实体且新增属性

# 创建实体
p1 = Node("Person", name="小明")
p2 = Node("Person", name="小红")
graph.create(p1)
graph.create(p2)

# 建立关系
p1_r_p2  = Relationship(p1, "喜欢", p2,year='初中')
p2_r_p1  = Relationship(p2, "讨厌", p1,year='高中')
graph.create(p1_r_p2)
graph.create(p2_r_p1)


# 创建另一个实体
p3 = Node("Person", name="小刚")
graph.create(p3)
p2_r_p3  = Relationship(p2, "喜欢", p3)
graph.create(p2_r_p3)
# 给实体追加属性
p2['age'] = 20
graph.push(p2)
# 给关系追加属性
p1_r_p2['程度']= '非常'
graph.push(p1_r_p2)
data = graph.run('MATCH (p:Person) return p')

创建实体与添加属性结果如下:

在这里插入图片描述

查询结果集

print(list(graph.match(r_type="喜欢")))
for v in data:  # tuple --> dict
    print(v,type(v),type(v[0]))  # Node 本质就是dict
    for val in v[0].values():
        print(val,end=' ')
    print('-'*100)
[(小明)-[:喜欢 {year: '\u521d\u4e2d', 程度: '\u975e\u5e38'}]->(小红), (小红)-[:喜欢 {}]->(小刚)]
<Record p=(_46149:Person {name: '\u5c0f\u660e'})> <class 'py2neo.data.Record'> <class 'py2neo.data.Node'>
小明 

<Record p=(_46186:Person {age: 20, name: '\u5c0f\u7ea2'})> <class 'py2neo.data.Record'> <class 'py2neo.data.Node'>
小红 20 

<Record p=(_46187:Person {name: '\u5c0f\u521a'})> <class 'py2neo.data.Record'> <class 'py2neo.data.Node'>
小刚

查询关系

print(list(graph.match(r_type="喜欢")))
# [(小明)-[:喜欢 {程度: '\u975e\u5e38'}]->(小红)]
print(list(graph.match(r_type="讨厌")))
# [(小红)-[:讨厌 {}]->(小明)]
[(小红)-[:喜欢 {}]->(小刚), (小明)-[:喜欢 {year: '\u521d\u4e2d', 程度: '\u975e\u5e38'}]->(小红)]
[(小红)-[:讨厌 {year: '\u9ad8\u4e2d'}]->(小明)]

在这里插入图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值