Python使用py2neo操作图数据库neo4j的方法详解
什么是neo4j
- Neo4j 是一个高度可扩展的、本质上是 ACID 的、即时图形数据库,
- 使用原始的负载贝尔格共享架构。
- Neo4j 被优化为大量复杂的图操作和高并发性
安装neo4j
- 在官网下载neo4j服务器
- 遵照提示安装neo4j服务器
Python与neo4j的连接
- Python官方提供的连接Neo4j的驱动是官方提供的neo4j-driver,py2neo在neo4j-driver的基础上做了一个封装,方便用户对neo4j进行操作,使用前需要通过pip安装:pip install py2neo
Python通过py2neo对neo4j进行操作
- 连接neo4j数据库
from py2neo import Graph
graph = Graph("bolt://localhost:7687", username="neo4j", password="1234")
- 创建节点和关系
node1 = Node("Person", name="Alice")
node2 = Node("Person", name="Bob")
rel = Relationship(node1, "KNOWS", node2)
- 关系的查询
query = 'MATCH (p1)-[r:KNOWS]->(p2) RETURN p1, r, p2'
results = graph.run(query)
for r in results:
print(r)
- 结点的查询
query = 'MATCH (n:Person) RETURN n'
results = graph.run(query)
for r in results:
print(r)
- 以上代码片段演示了如何使用py2neo连接neo4j数据库,以及如何创建节点和关系,并且演示了如何进行查询操作
示例1:电影推荐网站,使用neo4j数据库存储电影和演员关系
- 假设我们需要为电影推荐网站构建一个电影-演员关系的图形数据库,我们可以使用下面的Python代码创建:
from py2neo import Graph, Node, Relationship
def createMovies(graph):
# 创建电影
movie1 = Node("Movie", title="The Shawshank Redemption")
movie2 = Node("Movie", title="The Godfather")
movie3 = Node("Movie", title="The Dark Knight")
# 创建演员
actor1 = Node("Actor", name="Tim Robbins")
actor2 = Node("Actor", name="Marlon Brando")
actor3 = Node("Actor", name="Heath Ledger")
# 创建关系
rel1 = Relationship(movie1, "Actor", actor1)
rel2 = Relationship(movie2, "Actor", actor2)
rel3 = Relationship(movie3, "Actor", actor3)
# 保存数据
graph.create(movie1, actor1, rel1)
graph.create(movie2, actor2, rel2)
graph.create(movie3, actor3, rel3)
if __name__ == '__main__':
graph = Graph("http://localhost:7474/db/data/", username="neo4j", password="123")
createMovies(graph)
- 示例1演示了如何创建电影和演员的节点,并建立演员和电影的关系,并将数据保存到数据库中
示例2:新闻分类器,使用neo4j数据库存储关键词与新闻的关系
- 假设我们需要开发一个新闻分类器,将每篇新闻的关键词和相关新闻建立关联关系,并存储在neo4j数据库,我们可以使用下面的Python代码实现:
from py2neo import Graph, Node, Relationship
def createNews(graph):
# 创建新闻
news1 = Node("News", title="新闻1", text="新闻1的内容")
news2 = Node("News", title="新闻2", text="新闻2的内容")
news3 = Node("News", title="新闻3", text="新闻3的内容")
# 创建关键词
keyword1 = Node("Keyword", name="科技")
keyword2 = Node("Keyword", name="财经")
keyword3 = Node("Keyword", name="社会")
# 创建关系
rel1 = Relationship(news1, "Keyword", keyword1)
rel2 = Relationship(news2, "Keyword", keyword2)
rel3 = Relationship(news3, "Keyword", keyword3)
# 保存数据
graph.create(news1, keyword1, rel1)
graph.create(news2, keyword2, rel2)
graph.create(news3, keyword3, rel3)
if __name__ == '__main__':
graph = Graph("http://localhost:7474/db/data/", username="neo4j", password="123")
createNews(graph)
- 示例2演示了如何创建新闻和关键词的节点,并建立新闻和关键词的关系,并将数据保存到数据库中
总结
- Python通过py2neo对neo4j进行操作是一种简单、高效、快速的方式,可以灵活的操作neo4j数据库,这种方法在数据分析、匹配、推荐等领域有着广泛的应用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python使用py2neo操作图数据库neo4j的方法详解 - Python技术站