Python中操作Neo4j图数据库


 

 驱动导入

       要在Python中连接和操作Neo4j数据库,我们可以使用py2neo用于连接和操作Neo4j图数据库的高级客户端库。
        它提供了面向对象的接口,使得Python程序员能够方便地与 Neo4j 数据库进行交互。

执行步骤

     1、创建节点与关系(Relationship)
     2、执行 Cypher 查询
     3、图数据建模
     4、数据导入导出等操作

安装py2neo

pip install py2neo

安装Neo4j数据库

     需要有一个正在运行的 Neo4j 数据库,可以本地安装,也可以连接远程服务器(例如Docker部署neo4j)。

连接Neo4j

from py2neo import Graph # 本地默认配置(bolt://localhost:7687) graph = Graph("bolt://localhost:7687", auth=("neo4j", "your_password")) 

创建节点(Node)和关系(Relationship)

from py2neo import Node, Relationship # 创建节点 zs= Node("Person", name="张三") ls = Node("Person", name="李四") # 创建关系 knows = Relationship(zs, "knows", ls) # 将节点和关系写入数据库 graph.create(zs | ls | knows) 

执行 Cypher 查询

# 查询所有 Person 节点 results = graph.run("MATCH (p:Person) RETURN p.name").data() for result in results: print(result["p.name"]) # .run(query):执行任意 Cypher 查询 # .data():将查询结果以字典形式返回 

使用 NodeMatcher 查找节点

matcher = NodeMatcher(graph)
# 查找标签为 Person 且 name 为 Alice 的节点 zs = matcher.match("Person", name="张三").first() print(zs) # .match(label, **属性):匹配标签和属性 # .first():返回第一个匹配项

更新节点属性

matcher = NodeMatcher(graph)
# 查找标签为 Person 且 name 为 Alice 的节点 zs = matcher.match("Person", name="张三").first() zs["age"] = 30 graph.push(zs) # 将更改推送到数据库

删除节点和关系

matcher = NodeMatcher(graph)
# 查找标签为 Person 且 name 为 Alice 的节点 zs = matcher.match("Person", name="张三").first() graph.delete(zs) #graph.delete_all() 删除所有内容(慎用) graph.delete_all()

创建图模型

from py2neo.ogm import GraphObject, Property class Person(GraphObject): __primarykey__ = "name" name = Property() age = Property() 

完成例子代码:

from py2neo import Graph, Node, Relationship, NodeMatcher # 本地默认配置(bolt://localhost:7687) graph = Graph("bolt://192.168.219.128:7687", auth=("neo4j", "test@123456")) # 创建节点 zs= Node("Person", name="张三") ls = Node("Person", name="李四") # 创建关系 knows = Relationship(zs, "knows", ls) #将节点和关系写入数据库 graph.create(zs | ls | knows) matcher = NodeMatcher(graph) # 查找标签为 Person 且 name 为 Alice 的节点 zs = matcher.match("Person", name="张三").first() zs["age"] = 30 graph.push(zs) # 将更改推送到数据库 # 查找标签为 Person 且 name 为 Alice 的节点 zs = matcher.match("Person", name="张三").first() print("=======执行完成=============")

常用类和方法简表

类 / 方法 说明
Graph() 连接数据库
Node() 创建节点
Relationship() 创建关系
graph.create() 向数据库写入节点/关系
graph.run() 执行 Cypher 查询
NodeMatcher() 查找节点
graph.delete() 删除节点或关系
graph.push() 更新节点/关系属性
graph.pull() 拉取数据库中最新属性

py2neo适用场景

1、图数据库建模:社交网络、知识图谱、推荐系统
2、复杂关系查询:比如“某人认识谁的朋友”
3、Cypher 脚本管理和自动化操作
4、与机器学习/NLP 集成使用图结构建模数据

与其他Neo4j-Python驱动对比

驱动 特点
py2neo 高级封装,易于上手,面向对象
neo4j(官方驱动) 底层操作,性能好但略繁琐
neomodel Django 风格 ORM,适合模型驱动开发

操作小结

功能 方法
连接数据库 Graph(…)
创建节点 Node(…)
创建关系 Relationship(…)
插入数据 graph.create()
查找节点 NodeMatcher(graph).match()
执行查询 graph.run()
更新属性 graph.push()
删除节点关系 graph.delete()
清空数据库 graph.delete_all()

       特别说明:py2neo是一个功能强大、语法友好、支持对象建模的 Neo4j Python 库,特别适合构建图数据库应用和做图结构数据的快速原型开发。