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')

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

05_Python访问Neo4j数据库_第1张图片

查询结果集

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'}]->(小明)]

在这里插入图片描述

你可能感兴趣的:(前沿技术分享,python,数据库,neo4j)