Py2neo 是一个 Python 库,它提供了与 Neo4j 图数据库进行交互的简便方法。以下是如何使用 Py2neo 进行 Neo4j 图数据库的增(创建节点和关系)、删(删除节点和关系)、改(更新节点和关系的属性)、查(查询节点和关系)操作的简要指南。
安装 Py2neo
首先,你需要安装 py2neo。你可以使用 pip 来安装它:
bash复制代码
|
pip install py2neo |
连接到 Neo4j
在开始操作之前,你需要创建一个与 Neo4j 数据库的连接。
python复制代码
|
from py2neo import Graph |
|
|
|
# 连接到本地运行的 Neo4j 数据库 |
|
graph = Graph("bolt://localhost:7687", auth=("neo4j", "password")) |
确保将 "bolt://localhost:7687"
替换为你的 Neo4j 实例的实际地址,将 "neo4j"
和 "password"
替换为你的用户名和密码。
创建节点和关系
python复制代码
|
# 创建一个节点 |
|
alice = Node("Person", name="Alice", age=30) |
|
graph.create(alice) |
|
|
|
# 创建另一个节点 |
|
bob = Node("Person", name="Bob", age=25) |
|
graph.create(bob) |
|
|
|
# 创建关系 |
|
relationship = Relationship(alice, "KNOWS", bob, since=2020) |
|
graph.create(relationship) |
查询节点和关系
python复制代码
|
# 查询所有 Person 节点 |
|
for person in graph.nodes.match("Person"): |
|
print(person["name"], person["age"]) |
|
|
|
# 查询 Alice 认识的人 |
|
query = """ |
|
MATCH (a:Person {name: 'Alice'})-[r:KNOWS]->(b:Person) |
|
RETURN b.name |
|
""" |
|
results = graph.run(query) |
|
for record in results: |
|
print(record["b.name"]) |
更新节点和关系的属性
虽然 Py2neo 没有直接的更新方法,但你可以通过查询节点或关系,修改其属性,然后再次创建(这实际上是“替换”了旧的节点或关系)来实现更新。不过,更好的做法是使用 Cypher 查询来更新。
python复制代码
|
# 更新 Alice 的年龄 |
|
update_query = """ |
|
MATCH (a:Person {name: 'Alice'}) |
|
SET a.age = $new_age |
|
""" |
|
graph.run(update_query, new_age=31) |
|
|
|
# 更新关系的属性(注意:这通常会创建一个新的关系并删除旧的关系) |
|
# 更好的做法是先删除旧关系,再创建新关系,或者使用 Neo4j 的 UPSERT 功能 |
删除节点和关系
python复制代码
|
# 删除节点(及其关系) |
|
graph.delete(alice) |
|
|
|
# 或者使用 Cypher 查询删除 |
|
delete_query = """ |
|
MATCH (a:Person {name: 'Bob'})-[r:KNOWS]->() |
|
DELETE r |
|
""" |
|
graph.run(delete_query) |
|
|
|
# 删除特定关系 |
|
# 注意:你需要知道关系的 ID 或者使用某种方式来唯一标识关系 |
|
# 在 Py2neo 中直接删除关系通常不是很直观,因为关系通常是通过节点来管理的 |
|
# 更好的做法是使用 Cypher 查询来删除关系 |
请注意,直接使用 Py2neo 的 API 来管理关系可能有些复杂,因为关系通常是通过节点来创建和管理的。在实际应用中,你更可能会使用 Cypher 查询语言来执行复杂的图数据库操作。Py2neo 的 graph.run()
方法允许你执行任意的 Cypher 查询,这使得它非常灵活和强大。