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 importGraph, 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(官方驱动)底层操作,性能好但略繁琐 neomodelDjango 风格 ORM,适合模型驱动开发 操作小结
功能方法 连接数据库Graph(...) 创建节点Node(...) 创建关系Relationship(...) 插入数据graph.create() 查找节点NodeMatcher(graph).match() 执行查询graph.run() 更新属性graph.push() 删除节点关系graph.delete() 清空数据库graph.delete_all() 特别说明:py2neo是一个功能强大、语法友好、支持对象建模的 Neo4j Python 库,特别适合构建图数据库应用和做图结构数据的快速原型开发。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]