【Python】py2neo 库:连接和操作 Neo4j 图数据库

Python 中的 py2neo

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

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

1. 安装 py2neo

pip install py2neo

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


2. 快速连接 Neo4j

from py2neo import Graph

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

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

from py2neo import Node, Relationship

# 创建节点
alice = Node("Person", name="Alice")
bob = Node("Person", name="Bob")

# 创建关系
knows = Relationship(alice, "KNOWS", bob)

# 将节点和关系写入数据库
graph.create(alice | bob | knows)
  • Node(label, **属性)
  • Relationship(起点, 关系类型, 终点)

4. 执行 Cypher 查询

# 查询所有 Person 节点
results = graph.run("MATCH (p:Person) RETURN p.name").data()

for result in results:
    print(result["p.name"])
  • .run(query):执行任意 Cypher 查询
  • .data():将查询结果以字典形式返回

5. 使用 NodeMatcher 查找节点

from py2neo.matching import NodeMatcher

matcher = NodeMatcher(graph)

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

6. 更新节点属性

alice["age"] = 30
graph.push(alice)  # 将更改推送到数据库

7. 删除节点和关系

删除节点(需先删除与其相关的关系):

graph.delete(knows)
graph.delete(bob)

或者使用 graph.separate() 分离关系、graph.delete_all() 删除所有内容(慎用):

graph.delete_all()

8. 创建图模型(可选)

py2neo 支持类建模(GraphObject):

from py2neo.ogm import GraphObject, Property

class Person(GraphObject):
    __primarykey__ = "name"

    name = Property()
    age = Property()

9. 常用类和方法简表

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

10. 示例:完整流程

from py2neo import Graph, Node, Relationship, NodeMatcher

# 连接数据库
graph = Graph("bolt://localhost:7687", auth=("neo4j", "password"))

# 创建节点和关系
alice = Node("Person", name="Alice")
bob = Node("Person", name="Bob")
rel = Relationship(alice, "FRIEND", bob)

graph.create(alice | bob | rel)

# 查询并更新节点
matcher = NodeMatcher(graph)
found = matcher.match("Person", name="Alice").first()
found["age"] = 28
graph.push(found)

11. py2neo 适用场景

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

12. 与其他 Neo4j Python 驱动对比

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

13. 小结

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彬彬侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值