当前位置: 首页 > 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…...

手把手调试:用CANoe/CANalyzer抓包分析UDS 10服务的完整会话生命周期

手把手调试:用CANoe/CANalyzer抓包分析UDS 10服务的完整会话生命周期 在汽车电子控制单元(ECU)的开发和测试中,诊断协议的理解和应用是工程师必备的核心技能之一。UDS(Unified Diagnostic Services)协议作为…...

5分钟掌握KMS智能激活:Windows与Office全版本激活终极方案

5分钟掌握KMS智能激活:Windows与Office全版本激活终极方案 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统弹出激活提示而烦恼?Office突然变成只读模式…...

使用Python快速编写第一个调用Taotoken多模型API的脚本示例

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用Python快速编写第一个调用Taotoken多模型API的脚本示例 对于初次接触大模型API的开发者而言,如何快速上手并验证不…...

如何快速实现智慧树自动刷课:终极完整使用指南

如何快速实现智慧树自动刷课:终极完整使用指南 【免费下载链接】zhihuishu 智慧树刷课插件,自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 还在为智慧树平台枯燥的视频学习而手动点击"下一集&quo…...

炉石传说自动化脚本:解放你的游戏时间,智能完成每日任务

炉石传说自动化脚本:解放你的游戏时间,智能完成每日任务 【免费下载链接】Hearthstone-Script Hearthstone script(炉石传说脚本) 项目地址: https://gitcode.com/gh_mirrors/he/Hearthstone-Script 如果你是一位炉石传说玩…...

从电话到智能手机:技术如何重塑社交隔离与个人茧房

1. 从“佩格与罗西”到“科赛特”:一场技术赋能的社交隔离演变我姐姐佩格在形成可辨识的个性之前,是那种典型的青春期女孩——在闺蜜圈子里,她活泼、健谈、爱八卦,充满了各种“天哪”的惊叹和咯咯的笑声。但对于圈子外的人&#x…...

Windows平台OpenClaw 2.6.6安装配置完整教程与避坑全攻略

OpenClaw 2.6.6 Windows 一键部署教程|10分钟搭建本地AI智能助手 OpenClaw(小龙虾)是一款可在 Windows 平台本地运行的 AI 智能操作工具,能够通过自然语言指令完成文件管理、办公自动化、浏览器操控、数据处理等各类电脑任务。 …...

基于MCP协议构建Jira智能助手:连接AI与项目管理的实践指南

1. 项目概述:连接Jira与AI的桥梁最近在折腾AI应用开发,特别是想把手头的一些项目管理流程自动化。我发现很多团队都在用Jira管理任务,但每次想通过AI助手(比如Claude、Cursor)查询项目进度、创建Issue或者更新状态时&a…...

3大核心功能详解:StarRailAssistant让你轻松玩转崩坏星穹铁道自动化

3大核心功能详解:StarRailAssistant让你轻松玩转崩坏星穹铁道自动化 【免费下载链接】StarRailAssistant 崩坏:星穹铁道自动化 | 崩坏:星穹铁道自动锄大地 | 崩坏:星穹铁道锄大地 | 自动锄大地 | 基于模拟按键 项目地址: https:…...

终极GitHub加速插件完整指南:三步搞定下载速度飙升100倍!

终极GitHub加速插件完整指南:三步搞定下载速度飙升100倍! 【免费下载链接】Fast-GitHub 国内Github下载很慢,用上了这个插件后,下载速度嗖嗖嗖的~! 项目地址: https://gitcode.com/gh_mirrors/fa/Fast-GitHub 还…...