当前位置: 首页 > news >正文

知识图谱数据库 Neo4j in Docker笔记

下载

docker pull neo4j:community

在这里插入图片描述

官方说明

https://neo4j.com/docs/operations-manual/2025.01/docker/introduction/

启动

docker run \--restart always \--publish=7474:7474 --publish=7687:7687 \--env NEO4J_AUTH=neo4j/your_password \--volume=D:\files\knowledgegraph\data:/data \neo4j:community

打开

打开浏览器在地址栏输入:http://localhost:7474/

首次登录,输入用户名 neo4j 和密码 your_password

Python来读取Excel并通过py2neo创建

要使用 Python 来读取 Excel 数据,并通过 py2neo 创建图谱(将 Excel 中的数据转化为 Neo4j 图数据库中的节点和关系),可以按照以下步骤进行:

步骤概览:

  1. 使用 pandas 读取 Excel 文件。
  2. 解析 Excel 数据,确定哪些列表示节点和关系。
  3. 使用 py2neo 创建图节点和关系。
  4. 可选:将图数据存储到 Neo4j 数据库。

代码实现

假设你有一个 Excel 文件,其中包含以下列:

  • Employee: 员工姓名
  • Position: 员工职位
  • Company: 所属公司

例如,Excel 数据如下:

EmployeePositionCompany
AliceDeveloperTechCorp
BobManagerTechCorp
CarolDeveloperWebCorp

目标是根据这张表格创建 PersonCompany 类型的节点,并在它们之间创建 WORKS_AT 类型的关系。

1. 安装依赖库

如果你还没有安装 pandaspy2neo,可以使用以下命令进行安装:

pip install pandas py2neo

2. 代码示例

import pandas as pd
from py2neo import Graph, Node, Relationship# 连接到 Neo4j 数据库(请根据实际情况修改用户名、密码和数据库地址)
graph = Graph("bolt://localhost:7687", auth=("neo4j", "your_password"))# 读取 Excel 数据
df = pd.read_excel('employees.xlsx')  # 假设你的 Excel 文件名是 'employees.xlsx'# 创建节点和关系
for index, row in df.iterrows():# 创建公司节点,如果公司不存在company = Node("Company", name=row['Company'])graph.merge(company, "Company", "name")  # 使用 merge 以避免重复公司节点# 创建员工节点employee = Node("Person", name=row['Employee'], position=row['Position'])graph.merge(employee, "Person", "name")  # 使用 merge 以避免重复员工节点# 创建员工与公司之间的关系works_at = Relationship(employee, "WORKS_AT", company)graph.create(works_at)print("数据已成功导入 Neo4j 数据库!")

3. 代码解释

  1. 连接 Neo4j 数据库

    • 使用 Graph("bolt://localhost:7687", auth=("neo4j", "neo4j")) 连接到本地 Neo4j 数据库。
    • 根据需要修改 auth 参数中的用户名和密码。
  2. 读取 Excel 文件

    • 使用 pandas.read_excel 读取 Excel 文件内容到 DataFrame。你可以根据实际情况修改文件名和路径。
  3. 创建节点和关系

    • 公司节点:对于每一行,如果公司节点不存在,则创建一个新的节点。通过 graph.merge() 方法确保不会重复创建同名公司。
    • 员工节点:同样,对于每一行,如果员工节点不存在,则创建一个新的员工节点。使用 graph.merge() 来避免重复创建同名员工。
    • 员工与公司之间的关系:为每一对员工和公司创建 WORKS_AT 关系,并使用 graph.create() 将其保存到图数据库。

4. 可选步骤:检查结果

  • Neo4j 浏览器:打开 Neo4j 浏览器,执行查询 MATCH (n) RETURN n LIMIT 25 来查看是否成功导入了节点和关系。

  • Cypher 查询:你可以使用 Cypher 查询语言来查询某个员工在哪个公司工作,或者查询公司之间的关系等。

MATCH (e:Person)-[:WORKS_AT]->(c:Company)
RETURN e.name, c.name

5. 扩展功能

  • 批量插入数据:对于大型 Excel 文件,你可能需要考虑批量插入,以提高性能。py2neo 提供了 Batch API,可以一次性处理多个操作。
  • 复杂关系:你可以根据需要创建更复杂的关系和节点属性,拓展图谱模型。
from py2neo import Batchbatch = Batch(graph)for index, row in df.iterrows():# 创建公司节点company = Node("Company", name=row['Company'])batch.merge(company, "Company", "name")# 创建员工节点employee = Node("Person", name=row['Employee'], position=row['Position'])batch.merge(employee, "Person", "name")# 创建员工与公司之间的关系works_at = Relationship(employee, "WORKS_AT", company)batch.create(works_at)# 批量提交
batch.submit()

总结

在这里插入图片描述

通过上述步骤,你可以轻松地将 Excel 数据转换为 Neo4j 图数据库中的节点和关系。利用 pandas 读取 Excel 文件和 py2neo 创建节点/关系,可以有效地将结构化数据转化为图数据进行进一步分析和查询。

中文手册

https://we-yun.com/doc/neo4j-chs-doc/

相关文章:

知识图谱数据库 Neo4j in Docker笔记

下载 docker pull neo4j:community官方说明 https://neo4j.com/docs/operations-manual/2025.01/docker/introduction/ 启动 docker run \--restart always \--publish7474:7474 --publish7687:7687 \--env NEO4J_AUTHneo4j/your_password \--volumeD:\files\knowledgegrap…...

【动手学强化学习】02多臂老虎机

问题定义 强化学习关注的是在于环境交互中学习,是一种试错学习的范式。在正式进入强化学习之前,我们先来了解多臂老虎机问题。该问题也被看作简化版的强化学习,帮助我们更快地过度到强化学习阶段。 有一个拥有 K K K 根拉杆的老虎机&#…...

【网络编程】之Udp网络通信步骤

【网络编程】之Udp网络通信步骤 TCP网络通信TCP网络通信的步骤对于服务器端对于客户端 TCP实现echo功能代码实现服务器端getsockname函数介绍 客户端效果展示 对比两组函数 TCP网络通信 TCP网络通信的步骤 对于服务器端 创建监听套接字。(调用socket函数&#xff…...

Java 基于 SpringBoot+Vue 的家政服务管理平台设计与实现

博主介绍:✌程序员徐师兄、8年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战*✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅&#x1f447…...

架构——Nginx功能、职责、原理、配置示例、应用场景

以下是关于 Nginx 的功能、职责、原理、配置示例、应用场景及其高性能原因的详细说明: 一、Nginx 的核心功能 1. 静态资源服务 功能:直接返回静态文件(如 HTML、CSS、JS、图片、视频等)。配置示例:server {listen 80…...

Spring Boot中使用Flyway进行数据库迁移

文章目录 概要Spring Boot 集成 FlywayFlyway 其他用法bug错误Flyway版本不兼容数据库存在表了Flyway 的校验和(Checksum)不匹配 概要 在 Spring Boot 项目开发中,数据库的变更不可避免。手动执行 SQL 脚本不仅容易出错,也难以维…...

CAS单点登录(第7版)9.属性

如有疑问,请看视频:CAS单点登录(第7版) 属性 属性定义 概述 属性定义 从身份验证或属性存储库源获取和解析 CAS 中属性的定义时,往往使用其名称进行定义和引用,而无需任何其他元数据或修饰。例如&#…...

137,【4】 buuctf web [SCTF2019]Flag Shop

进入靶场 都点击看看 发现点击work会增加¥ 但肯定不能一直点下去 抓包看看 这看起来是一个 JWT(JSON Web Token)字符串。JWT 通常由三部分组成,通过点(.)分隔,分别是头部(Header&…...

P9853 [入门赛 #17] 方程求解

P9853 [入门赛 #17] 方程求解 - 洛谷 题目描述 小A有n个关于x的方程,第i个方程形如ai​xi​bi​ci​。方程的解x均为正整数,例如下面几个方程都是符合要求的方程: 2x 4 10 -3x 13 10 4x - 8 16 其中,第一组方程的解为x1​…...

【网络安全 | 漏洞挖掘】跨子域账户合并导致的账户劫持与删除

未经许可,不得转载。 文章目录 概述正文漏洞成因概述 在对目标系统进行安全测试时,发现其运行着两个独立的域名——一个用于司机用户,一个用于开发者/企业用户。表面上看,这两个域名各自独立管理账户,但测试表明它们在处理电子邮件变更时存在严重的逻辑漏洞。该漏洞允许攻…...

spring集成activiti流程引擎(源码)

前言 activiti工作流引擎项目,企业erp、oa、hr、crm等企事业办公系统轻松落地,请假审批demo从流程绘制到审批结束实例。 源码获取:本文末个人名片直接获取。 一、项目形式 springbootvueactiviti集成了activiti在线编辑器,流行…...

ROS基本功能

1.Topic话题与Message消息(主要通讯方式) 基本规则 发布消息的步骤 常用工具 话题的订阅 使用launch启动多个节点...

C++基础系列【13】类的成员初始化

博主介绍:程序喵大人 35- 资深C/C/Rust/Android/iOS客户端开发10年大厂工作经验嵌入式/人工智能/自动驾驶/音视频/游戏开发入门级选手《C20高级编程》《C23高级编程》等多本书籍著译者更多原创精品文章,首发gzh,见文末👇&#x1f…...

Redis 03章——10大数据类型概述

一、which10 (1)一图 (2)提前声明 这里说的数据类型是value的数据类型,key的类型都是字符串 官网:Understand Redis data types | Docs (3)分别是 1.3.1redis字符串&#xff0…...

Ubuntu 上安装 Elasticsearch 7.6.0

要在 Ubuntu 24.04 上安装 Elasticsearch 7.6.0,可以按照以下步骤进行: 步骤 1: 更新系统依赖 确保系统是最新的,并安装必要的依赖包: sudo apt update sudo apt upgrade -y sudo apt install -y apt-transport-https openjdk-1…...

Android ListPreference使用

Android ListPreference使用 参考 添加链接描述 导入 androidx.preference.ListPreferenceListPreference是Android中的一个Preference子类,用于显示一个可选择的列表,并且可以保存用户所选择的值。它继承自DialogPreference,可以在用户点击时弹出一个对话框,显示可选择的…...

Java 大视界 -- 绿色大数据:Java 技术在节能减排中的应用与实践(90)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...

计算四个锚点TOA定位中GDOP的详细步骤和MATLAB例程

该MATLAB代码演示了在三维空间中,使用四个锚点的TOA(到达时间)定位技术计算几何精度衰减因子(GDOP)的过程。如需帮助,或有导航、定位滤波相关的代码定制需求,请联系作者 文章目录 DOP计算原理MATLAB例程运行结果示例关键点说明扩展方向另有文章: 多锚点Wi-Fi定位和基站…...

英码科技基于昇腾算力实现DeepSeek离线部署

DeepSeek-R1 模型以其创新架构和高效能技术迅速成为行业焦点。如果能够在边缘进行离线部署,不仅能发挥DeepSeek大模型的效果,还能确保数据处理的安全性和可控性。 英码科技作为AI算力产品和AI应用解决方案服务商,积极响应市场需求&#xff0…...

CTex安装和使用(1)

CTeX是一款基于TeX/LaTeX的集成开发环境(IDE),主要用于文档排版,特别是在处理复杂的数学公式和学术论文方面具有显著优势。以下是CTeX的一些基本信息: 功能 文档编辑 :提供了一个友好的界面用于编辑LaTeX…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

【单片机期末】单片机系统设计

主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区&#xff08;Partitioning&#xff09;是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分&#xff08;分区&#xff09;可以独立存储、管理和优化&#xff0c;…...

从面试角度回答Android中ContentProvider启动原理

Android中ContentProvider原理的面试角度解析&#xff0c;分为​​已启动​​和​​未启动​​两种场景&#xff1a; 一、ContentProvider已启动的情况 1. ​​核心流程​​ ​​触发条件​​&#xff1a;当其他组件&#xff08;如Activity、Service&#xff09;通过ContentR…...