qidao123.com技术社区-IT企服评测·应用市场

标题: Python中操作Neo4j图数据库 [打印本页]

作者: tsx81429    时间: 2025-5-7 12:58
标题: Python中操作Neo4j图数据库
 
 驱动导入

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

     1、创建节点与关系(Relationship)
     2、执行 Cypher 查询
     3、图数据建模
     4、数据导入导出等操作
安装py2neo
  1. pip install py2neo
复制代码
安装Neo4j数据库

     必要有一个正在运行的 Neo4j 数据库,可以当地安装,也可以毗连远程服务器(例如Docker部署neo4j)。
毗连Neo4j
  1. from py2neo import Graph
  2. # 本地默认配置(bolt://localhost:7687)
  3. graph = Graph("bolt://localhost:7687", auth=("neo4j", "your_password"))
复制代码
创建节点(Node)和关系(Relationship)
  1. from py2neo import Node, Relationship
  2. # 创建节点
  3. zs= Node("Person", name="张三")
  4. ls = Node("Person", name="李四")
  5. # 创建关系
  6. knows = Relationship(zs, "knows", ls)
  7. # 将节点和关系写入数据库
  8. graph.create(zs | ls | knows)
复制代码
执行 Cypher 查询
  1. # 查询所有 Person 节点
  2. results = graph.run("MATCH (p:Person) RETURN p.name").data()
  3. for result in results:
  4.     print(result["p.name"])
  5. # .run(query):执行任意 Cypher 查询
  6. # .data():将查询结果以字典形式返回
复制代码
使用 NodeMatcher 查找节点
  1. matcher = NodeMatcher(graph)
  2. # 查找标签为 Person 且 name 为 Alice 的节点
  3. zs = matcher.match("Person", name="张三").first()
  4. print(zs)
  5. # .match(label, **属性):匹配标签和属性
  6. # .first():返回第一个匹配项
复制代码
更新节点属性
  1. matcher = NodeMatcher(graph)
  2. # 查找标签为 Person 且 name 为 Alice 的节点
  3. zs = matcher.match("Person", name="张三").first()
  4. zs["age"] = 30
  5. graph.push(zs)  # 将更改推送到数据库
复制代码
删除节点和关系
  1. matcher = NodeMatcher(graph)
  2. # 查找标签为 Person 且 name 为 Alice 的节点
  3. zs = matcher.match("Person", name="张三").first()
  4. graph.delete(zs)
  5. #graph.delete_all() 删除所有内容(慎用)
  6. graph.delete_all()
复制代码
创建图模型
  1. from py2neo.ogm import GraphObject, Property
  2. class Person(GraphObject):
  3.     __primarykey__ = "name"
  4.     name = Property()
  5.     age = Property()
复制代码
完成例子代码:
  1. 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)
  2. # 查找标签为 Person 且 name 为 Alice 的节点
  3. zs = matcher.match("Person", name="张三").first()
  4. zs["age"] = 30
  5. 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 库,特别适合构建图数据库应用和做图布局数据的快速原型开发。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/) Powered by Discuz! X3.4