Python使用py2neo操作图数据库neo4j的方法详解

yizhihongxing

Python使用py2neo操作图数据库neo4j的方法详解

什么是neo4j

  • Neo4j 是一个高度可扩展的、本质上是 ACID 的、即时图形数据库,
  • 使用原始的负载贝尔格共享架构。
  • Neo4j 被优化为大量复杂的图操作和高并发性

安装neo4j

  1. 官网下载neo4j服务器
  2. 遵照提示安装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技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • python调试器中的所有变量都未定义

    【问题标题】:all variables are undefined in python debuggerpython调试器中的所有变量都未定义 【发布时间】:2023-04-03 06:54:01 【问题描述】: 我在 Python 3.6 上遇到了一个非常奇怪的问题。在我的代码中间,我调用import pdb; pdb.set_trace() 来调试一些…

    Python开发 2023年4月8日
    00
  • 使用Python设计一个代码统计工具

    使用Python设计一个代码统计工具可以帮助开发者统计代码行数、空行数、注释行数等信息,对于项目管理和代码规范性检查具有很大的帮助作用。下面是设计这个工具的完整攻略。 设计思路 1.首先,我们需要获取代码文件路径,可以使用命令行参数来实现。使用sys.argv获取命令行参数列表,第一个参数是脚本名称,后面的参数依次代表输入的代码文件路径。 2.其次,我们需要…

    python 2023年5月30日
    00
  • Python爬虫中的并发编程详解

    Python爬虫中的并发编程详解 在Python爬虫中,为了提高爬虫效率,通常需要使用并发编程。本文将介绍Python爬虫中的并发编程,包括多线程、协程和异步IO等技术。同时,还会提供两个示例讲解。 多线程 多线程是指在一个进程中存在多个线程,每个线程都可以独立执行不同的任务。在Python中,可以使用threading模块实现多线程编程。 下面是一个简单的…

    python 2023年5月14日
    00
  • 利用python实现周期财务统计可视化

    下面是详细讲解“利用python实现周期财务统计可视化”的完整攻略: 1. 概述 周期财务统计是企业财务分析和决策的常用方法,通过对财务数据进行统计和分析,帮助企业了解自身的经营情况,以便针对问题进行调整和优化。利用Python进行周期财务统计分析和可视化,可以极大地提高分析效率和准确性。 2. 准备工作 在开始进行周期财务统计和可视化之前,需要进行一些准备…

    python 2023年6月5日
    00
  • Pandas DataFrame转换为字典的方法

    将Pandas DataFrame对象转换为字典通常用于将数据传递给其他接收字典类型的函数或程序。下面是将Pandas DataFrame对象转换为字典的方法: 1. 使用to_dict()方法 Pandas DataFrame的to_dict()方法通过将DataFrame的数据转换为一个字典来实现。该方法接受一个orient参数,指定字典的输出方向。默认…

    python 2023年5月13日
    00
  • python使用点操作符访问字典(dict)数据的方法

    使用点操作符访问字典数据,需要先将字典转化为对象。在Python中,可以使用字典对象.键名的方式来访问字典中的数据。 下面是两个使用点操作符访问字典数据的示例: 示例1 # 定义一个字典数据 dict1 = {"name":"小明", "age":18} # 使用点操作符访问字典数据 name = …

    python 2023年5月13日
    00
  • Python爬虫之requests库基本介绍

    Python爬虫之requests库基本介绍 在Python中,requests库是一个常用的HTTP客户端库,用于发送HTTP请求和处理HTTP响应。本文将介绍requests库的基本用法,并提供两个示例。 requests库的安装 在使用requests库之前,需要先安装它。可以使用pip命令来安装requests库,如下所示: pip install …

    python 2023年5月15日
    00
  • python fuzzywuzzy模块模糊字符串匹配详细用法

    Python FuzzyWuzzy模块模糊字符串匹配详细用法攻略 什么是FuzzyWuzzy? FuzzyWuzzy是一个Python模块,它提供了一组函数,可以用于模糊字符串聚合和匹配。它主要使用Levenshtein距离算法来计算字符串的相似程度。相对于传统的字符串匹配算法,例如精确匹配和正则表达式匹配,FuzzyWuzzy更适用于模糊匹配,能够处理不同…

    python 2023年6月5日
    00
合作推广
合作推广
分享本页
返回顶部