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

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 记录、结构体和纯数据对象

    Python中有多种方式来表示数据,这其中包括用列表、字典或对象等方式,其中包括记录、结构体和纯数据对象。本文将为您详细讲解Python 记录、结构体和纯数据对象的使用方法。 记录 Python 中的记录是一种类似于 C 或 Pascal 中的结构体。它是一个有序的由字段组成的元组,其中每个字段可以是一个任意类型的值。 定义一个记录可以使用namedtupl…

    python-answer 2023年3月25日
    00
  • python 环境搭建 及python-3.4.4的下载和安装过程

    以下是关于“Python环境搭建及Python-3.4.4的下载和安装过程”的完整攻略: 环境搭建 在开始 Python 编程之前,需要先搭建 Python 环境。Python 环境包括 Python 解释器、Python 标准库和第三方库。下面是 Python 环境搭建的步骤: 下载 Python 安装包 安装 Python 解释器 配置环境变量 安装第三…

    python 2023年5月13日
    00
  • 如何使用Tkinter进行窗口的管理与设置

    使用Tkinter进行窗口的管理和设置,主要包括以下步骤: 导入Tkinter模块 创建窗口 设置窗口属性 添加控件 运行窗口 下面的两个示例说明如何使用Tkinter进行窗口的创建、控件的添加和设置窗口属性。示例代码均为Python 3.x语法。 示例一:创建一个简单的窗口并添加标签控件 import tkinter as tk # 创建窗口 root =…

    python 2023年6月13日
    00
  • 如何在Python中使用数据库?

    让我来为您详细讲解如何在Python中使用数据库。 一、准备工作 在使用Python操作数据库前,需要安装相应的数据库驱动包。在这里以MySQL数据库为例,可以使用Python的第三方库pymysql来操作MySQL数据库。 安装pymysql可以使用pip工具,在命令行中输入如下命令即可: pip install pymysql 二、连接到数据库 连接到M…

    python 2023年4月19日
    00
  • Python中删除文件的几种方法实例

    Python中删除文件的几种方法实例 在Python中,我们可以使用多种方法来删除文件。本文将为大家介绍Python中删除文件的几种方法实例。 1. 使用os模块中的remove函数 os模块中提供了remove函数,可以用来删除文件。 示例代码如下: import os file_path = ‘test.txt’ if os.path.exists(fi…

    python 2023年6月2日
    00
  • pytest使用@pytest.mark.parametrize()实现参数化的示例代码

    以下是关于“pytest使用@pytest.mark.parametrize() 实现参数化的示例代码”的完整攻略。 1. 简介 pytest.mark.parametrize() 是 pytest 中用来实现参数化测试的方法,可以用来避免重复测试相似用例的冗余代码。 2. 语法 pytest.mark.parametrize() 函数的语法如下: @pyt…

    python 2023年5月13日
    00
  • Python时间整数问题

    【问题标题】:Python time integer issuePython时间整数问题 【发布时间】:2023-04-04 03:14:01 【问题描述】: 我正在尝试计算“当时”和“现在”之间的时间差。我改变了格式,以便更好地比较它(我不需要秒或纳秒等) ‘then’ 时间来自加密,并且正在被解析以进行比较,这就是我担心的错误。 def decrypt_…

    Python开发 2023年4月6日
    00
  • python获取文件真实链接的方法,针对于302返回码

    Python 获取文件真实链接的方法,针对于 302 返回码 在爬取网站数据时,有些网站会将文件链接进行加密或者重定向,为了获取文件的真实链接,我们需要对重定向进行处理。以下是 Python 获取文件真实链接的方法,针对于 302 返回码。 使用 requests 模块获取真实链接 使用 requests 模块获取真实链接非常简单,只需要使用 allow_r…

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