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

使用 Python 和 Py2Neo 构建 Neo4j 管理脚本

Neo4j 是一个强大的图数据库,适合处理复杂的关系型数据。借助 Python 的 py2neo 库,我们可以快速实现对 Neo4j 数据库的管理和操作。本文介绍一个功能丰富的 Python 脚本,帮助用户轻松管理 Neo4j 数据库,包含启动/停止服务、清空数据、统计分析、图谱可视化等功能。


1. 脚本功能一览

用户通过数字选择对应的功能:

  1. 启动 Neo4j:通过命令行启动 Neo4j 服务。
  2. 停止 Neo4j:停止运行中的 Neo4j 服务。
  3. 清空 Neo4j:删除数据库中所有数据。
  4. 图谱可视化:展示知识图谱的结构,并生成图片。
  5. 统计分析:统计节点和关系的数量。
  6. 导出图谱:将图谱导出为 JSON 文件,支持选择保存路径。
  7. 数据健康检查:检查图谱中的孤立节点和重复节点。
  8. 退出程序

2. 脚本核心实现

2.1 脚本入口

以下是功能菜单的实现,每个功能都有对应的函数,用户输入数字即可调用:

def main():while True:print("\n请选择一个功能:")print("1. 启动 Neo4j")print("2. 停止 Neo4j")print("3. 清空 Neo4j")print("4. 图谱可视化")print("5. 统计分析")print("6. 导出图谱")print("7. 数据健康检查")print("8. 退出")choice = input("输入功能编号:")if choice == "1":start_neo4j()elif choice == "2":stop_neo4j()elif choice == "3":clear_database()elif choice == "4":visualize_graph()elif choice == "5":statistical_analysis()elif choice == "6":export_graph()elif choice == "7":health_check()elif choice == "8":print("退出程序。")breakelse:print("无效输入,请重试!")
2.2 功能实现
启动/停止 Neo4j 服务

借助系统命令行操作,我们可以在另一个终端中启动或停止 Neo4j:

def start_neo4j():"""启动 Neo4j 服务"""os.system("neo4j console &")print("Neo4j 服务已启动...")def stop_neo4j():"""停止 Neo4j 服务"""os.system("neo4j stop")print("Neo4j 服务已停止...")
清空 Neo4j 数据

利用 Cypher 查询可以快速清空图数据库中的所有节点和关系:

def clear_database():"""清空当前知识图谱中的所有数据"""graph.run("MATCH (n) DETACH DELETE n")print("图谱已清空!")
图谱可视化

使用 py2neo 查询数据,结合 networkxmatplotlib,我们可以绘制出知识图谱的可视化图像:

def visualize_graph():"""图谱可视化:生成图片展示"""query = "MATCH (n)-[r]->(m) RETURN n.name AS node1, type(r) AS relationship, m.name AS node2 LIMIT 50"results = graph.run(query).data()if not results:print("图谱中没有可视化的数据。")returnG = nx.DiGraph()  # 使用有向图for record in results:node1 = record["node1"] or "Unnamed Node"node2 = record["node2"] or "Unnamed Node"relationship = record["relationship"] or "RELATED_TO"G.add_edge(node1, node2, relationship=relationship)plt.figure(figsize=(12, 8))pos = nx.spring_layout(G)  # 布局nx.draw(G, pos, with_labels=True, node_color="skyblue", node_size=2000, font_size=12, font_weight="bold", arrowsize=15)edge_labels = nx.get_edge_attributes(G, "relationship")nx.draw_networkx_edge_labels(G, pos, edge_labels=edge_labels, font_size=10)plt.title("Neo4j Graph Visualization")plt.show()
数据统计分析

通过 Cypher 查询统计图谱中的节点和关系数量:

def statistical_analysis():"""统计分析:节点和关系数量"""node_count = graph.run("MATCH (n) RETURN COUNT(n) AS count").data()[0]["count"]relationship_count = graph.run("MATCH ()-[r]->() RETURN COUNT(r) AS count").data()[0]["count"]print(f"节点数量:{node_count}")print(f"关系数量:{relationship_count}")
导出图谱为 JSON 文件

允许用户选择保存路径,将查询结果保存为 JSON 格式:

def export_graph():"""导出图谱为 JSON 文件"""query = "MATCH (n)-[r]->(m) RETURN n, r, m"results = graph.run(query).data()data = [{"node1": dict(record["n"]), "relationship": dict(record["r"]), "node2": dict(record["m"])} for record in results]root = Tk()root.withdraw()  # 隐藏主窗口save_path = filedialog.asksaveasfilename(defaultextension=".json", filetypes=[("JSON files", "*.json")])if save_path:with open(save_path, "w", encoding="utf-8") as f:json.dump(data, f, indent=4)print(f"图谱已导出至:{save_path}")
数据健康检查

检查图谱中的孤立节点(没有关系)和重复节点:

def health_check():"""数据健康检查"""orphan_nodes = graph.run("MATCH (n) WHERE NOT (n)--() RETURN COUNT(n) AS count").data()[0]["count"]duplicate_nodes = graph.run("MATCH (n) WITH n.name AS name, COUNT(*) AS count WHERE count > 1 RETURN COUNT(name) AS count").data()[0]["count"]print(f"孤立节点数量:{orphan_nodes}")print(f"重复节点数量:{duplicate_nodes}")

3. 图谱可视化示例

执行“图谱可视化”功能后,脚本会绘制图谱的结构图


4. 使用前的准备

  1. 环境依赖安装
    确保已安装以下库:

    pip install py2neo networkx matplotlib
    
  2. Neo4j 连接配置
    修改脚本中连接数据库的代码:

    graph = Graph("bolt://localhost:7687", auth=("neo4j", "password"))
    
  3. 运行脚本
    运行脚本文件:

    python neo4j_manager.py
    

相关文章:

使用 Python 和 Py2Neo 构建 Neo4j 管理脚本

Neo4j 是一个强大的图数据库,适合处理复杂的关系型数据。借助 Python 的 py2neo 库,我们可以快速实现对 Neo4j 数据库的管理和操作。本文介绍一个功能丰富的 Python 脚本,帮助用户轻松管理 Neo4j 数据库,包含启动/停止服务、清空数…...

Centos 7 安装wget

Centos 7 安装wget 最小化安装Centos 7 的话需要上传wget rpm包之后再路径下安装一下。rpm包下载地址(http://mirrors.163.com/centos/7/os/x86_64/Packages/) 1、使用X-ftp 或者WinSCP等可以连接上传的软件都可以首先连接服务器,这里我用的…...

定时器的小应用

第一个项目 第一步,RCC开启时钟,这个基本上每个代码都是第一步,不用多想,在这里打开时钟后,定时器的基准时钟和整个外设的工作时钟就都会同时打开了 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);第二步&…...

linux企业中常用NFS、ftp服务

1.静态ip配置 修改ip地址为静态vim /etc/sysconfig/network-scripts/ifcfg-enxxx BOOTPROTO"static" IPADDR192.168.73.10 GATEWAY192.168.73.2 # 该配置与虚拟机网关一致 NETMASK255.255.255.0重启网卡:systemctl restart network.service ping不通域名…...

数据结构与算法分析模拟试题及答案5

模拟试题(五) 一、单项选择题(每小题 2 分,共20分) (1)队列的特点是(   )。 A)先进后出 B)先进先出 C)任意位置进出 D&#xff0…...

.NET 9.0 中 System.Text.Json 的全面使用指南

以下是一些 System.Text.Json 在 .NET 9.0 中的使用方式,包括序列化、反序列化、配置选项等,并附上输出结果。 基本序列化和反序列化 using System; using System.Text.Json; public class Program {public class Person{public string Name { get; se…...

Python自动检测requests所获得html文档的编码

使用chardet库自动检测requests所获得html文档的编码 使用requests和BeautifulSoup库获取某个页面带来的乱码问题 使用requests配合BeautifulSoup库,可以轻松地从网页中提取数据。但是,当网页返回的编码格式与Python默认的编码格式不一致时&#xff0c…...

11.12机器学习_特征工程

四 特征工程 1 特征工程概念 特征工程:就是对特征进行相关的处理 一般使用pandas来进行数据清洗和数据处理、使用sklearn来进行特征工程 特征工程是将任意数据(如文本或图像)转换为可用于机器学习的数字特征,比如:字典特征提取(特征离散化)、文本特征提取、图像特征提取。 …...

RAG经验论文《FACTS About Building Retrieval Augmented Generation-based Chatbots》笔记

《FACTS About Building Retrieval Augmented Generation-based Chatbots》是2024年7月英伟达的团队发表的基于RAG的聊天机器人构建的文章。 这篇论文在待读列表很长时间了,一直没有读,看题目以为FACTS是总结的一些事实经验,阅读过才发现FAC…...

【配置后的基本使用】CMake基础知识

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀各种软件安装与配置_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1.…...

ollama+springboot ai+vue+elementUI整合

1. 下载安装ollama (1) 官网下载地址:https://github.com/ollama/ollama 这里以window版本为主,下载链接为:https://ollama.com/download/OllamaSetup.exe。 安装完毕后,桌面小图标有一个小图标,表示已安装成功&…...

【项目开发】理解SSL延迟:为何HTTPS比HTTP慢?

未经许可,不得转载。 文章目录 前言HTTP与HTTPS的耗时差异TCP握手HTTPS的额外步骤:SSL握手使用curl测量SSL延迟性能与安全的权衡前言 在互联网发展的早期阶段,Netscape公司设计了SSL(Secure Sockets Layer)协议,为网络通信提供加密和安全性。有人曾提出一个大胆的设想:…...

2.STM32之通信接口《精讲》之USART通信

有关通信详解进我主页观看其他文章!【免费】SPIIICUARTRS232/485-详细版_UART、IIC、SPI资源-CSDN文库 通过以上可以看出。根据电频标准,可以分为TTL电平,RS232电平,RS485电平,这些本质上都属于串口通信。有区别的仅是…...

Bootstrap和jQuery开发案例

目录 1. Bootstrap和jQuery简介及优势2. Bootstrap布局与组件示例:创建一个响应式的表单界面 3. jQuery核心操作与事件处理示例:使用jQuery为表单添加交互 4. Python后端实现及案例代码案例 1:用户登录系统Flask后端代码前端代码 5. 设计模式…...

Qt 之 qwt和QCustomplot对比

QWT(Qt Widgets for Technical Applications)和 QCustomPlot 都是用于在 Qt 应用程序中绘制图形和图表的第三方库。它们各有优缺点,适用于不同的场景。 以下是 QWT 和 QCustomPlot 的对比分析: 1. 功能丰富度 QWT 功能丰富&a…...

【STM32】MPU6050简介

文章目录 MPU6050简介MPU6050关键块带有16位ADC和信号调理的三轴MEMS陀螺仪具有16位ADC和信号调理的三轴MEMS加速度计I2C串行通信接口 MPU6050对应的数据手册:MPU6050 陀螺仪加速度计 链接: https://pan.baidu.com/s/13nwEhGvsfxx0euR2hMHsyw?pwdv2i6 提取码: v2i6…...

Oracle 单机及 RAC 环境 归档模式及路径修改

Oracle 数据库的使用过程中经常会根据需求的不同而调整归档模式,也经常会修改归档文件存放路径。 下面分别演示单机及 RAC 环境下修改归档模式及路径的操作步骤。 一、单机环境 1.查询当前归档模式及路径 SQL> archive log list Database log mode …...

抽象java入门1.5.3.1——类的进阶

前言:在研究神技代码Hello word的时候,发现了一个重大公式bug,在代码溯源中,我发现了一个奇怪的东西,就是OUT不是类中类(不是常规类的写法) 内容总结: 代码运行的顺序复习 正片开始…...

python——模块 迭代器 正则

一、python模块 先创建一个 .py 文件,这个文件就称之为 一个模块 Module。 使用模块的优点: 模块化编程,多文件编程 1.2 模块的使用 1.2.1 import语句 想要B.py文件中,使用A.py文件,只需要在B.py文件中使用关键字…...

QT仿QQ聊天项目,第三节,实现聊天界面

一,界面控件示意图 界面主要由按钮QPushButton,标签QLabel,列表QListWidget 要注意的是QListWidget既是实现好友列表的控件,也是实现聊天气泡的控件 二,控件样式 QPushButton#btn_name {border:none;}QPushButton#btn_close {border:1px;bac…...

Linux-何为CentOS

今年公司做的 POC 项目中,越来越多地听到客户开始或已经将系统迁移到麒麟、统信、openEuler,但还是有很多客户在用CentOS 7,或者和CentOS 7兼容的其他Linux。今天把CentOS 7相关概念统一整理下供后续参考使用 何为CentOS CentOS — Communit…...

C++中的 std::optional

std::optional<T>是 C17 中的一个标准库组件&#xff0c;optional <T>对象默认是空的&#xff0c;也就是处于无效状态&#xff0c;给它赋值后因为里面有了元素&#xff0c;就变成了有效状态。 1.引入背景 c函数常用返回值表示函数是否执行成功。如返回nullptr表示…...

猫狗识别之BUG汇总

一、github登不上去问题 下载watt toolkit 下载地址&#xff1a;https://steampp.net/ 可以下载后加速&#xff0c;访问github 二、猫狗总体参考核心 B哥的博客 https://github.com/bubbliiiing/classification-keras?tabreadme-ov-file 三、CSDN很多会员才能阅读问题 根据…...

【论文复现】自动化细胞核分割与特征分析

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀自动化细胞核分割与特征分析 引言1. 效果展示2. HoverNet概述3. HoverNet原理分析整体网络框架实例分割原理 4. HoverNet评估结果5. 复现过程…...

排序算法 -快速排序

文章目录 1. 快速排序&#xff08;Quick Sort&#xff09;1.1、 简介1.2、 快速排序的步骤 2. Hoare 版本2.1、 基本思路1. 分区&#xff08;Partition&#xff09;2. 基准选择&#xff08;Pivot Selection&#xff09;3. 递归排序&#xff08;Recursive Sorting&#xff09; 2…...

K8S 查看pod节点的磁盘和内存使用情况

查看某个节点的磁盘使用率&#xff1a; kubectl exec -it pod名称 -n 命名空间 – df -h 查询所有节点的已使用内存&#xff1a; kubectl top pods --all-namespaces | grep itsm 查询某个节点的总内存&#xff0c; kubectl describe pod itsr-domain-59f4ff5854-hzb68 --nam…...

华为HCIP——MSTP/RSTP与STP的兼容性

一、MSTP/RSTP与STP的兼容性的原理&#xff1a; 1.BPDU版本号识别&#xff1a;运行MSTP/RSTP协议的交换机会根据收到的BPDU&#xff08;Bridge Protocol Data Unit&#xff0c;桥协议数据单元&#xff09;版本号信息自动判断与之相连的交换机的运行模式。如果收到的是STP BPDU…...

AI 大模型如何重塑软件开发流程:现状与未来展望

随着人工智能技术的飞速发展&#xff0c;AI 大模型的出现正在深刻改变软件开发行业的传统模式。从代码生成到智能测试&#xff0c;AI 已渗透到软件开发的各个环节&#xff0c;为开发者提供了前所未有的效率提升&#xff0c;同时也带来了全新的挑战与思考。在本文中&#xff0c;…...

3步实现贪吃蛇

方法很简单&#xff0c;打开页面&#xff0c;复制&#xff0c;粘贴 一.整体思维架构 我们根据游戏的开始&#xff0c;运行&#xff0c;结束&#xff0c;将整个游戏划分成三个部分。在每个部分下面又划分出多个功能&#xff0c;接下来我们就根据模块一一实现功能。 二.Gamesta…...

华东师范大学数学分析第五版PDF习题答案上册及下册

“数学分析”是数学专业最重要的一门基础课程&#xff0c;也是报考数学类专业硕士研究生的专业考试科目。为了帮助、指导广大读者学好这门课程&#xff0c;编者编写了与华东师范大学数学科学学院主编的《数学分析》(第五版)配套的辅导用书&#xff0c;以帮助读者加深对基本概念…...

武汉网站制作成功案例/php搭建一个简单的网站

MySQL explain 和 profiling 详解 mysql explain MySQL 的 EXPLAIN 是一个用于查询优化的工具&#xff0c;它可以显示 MySQL 数据库如何执行查询。它返回一组关于查询执行计划的信息&#xff0c;包括用到的索引&#xff0c;表的连接顺序以及 MySQL 使用的查询类型。下面是 EXP…...

网站制作员/seo咨询

时至如今&#xff0c;手机里需不需要AI&#xff0c;已经不再是一个问题。自2017年&#xff0c;华为用麒麟970芯片拉开端侧AI的序幕之后&#xff0c;我们已经见证到了AI带给手机以非常多的想象力。手机AI摄影、AI摄像广受好评&#xff1b;语音助手与情景智能被拉升到了全新高度&…...

网站建设亿码酷适合5/腾讯控股第三季度营收1401亿

论文译文&#xff1a;地址 1、阅读论文 Radford A, Metz L, Chintala S. Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks[J]. Computer Science, 2015. 2、翻译论文 摘要 近年来&#xff0c;使用卷积神经网络的监督学习被…...

wordpress帝国cms/安卓aso

物联网&#xff08;英语&#xff1a;InternetofThings&#xff0c;缩写IoT&#xff09;是互联网、传统电信网等信息承载体&#xff0c;让所有能行使独立功能的普通物体实现互联互通的网络。 物联网与互联网的关系&#xff1a; 一&#xff0c;物联网的核心和基础仍然是互联网&…...

做网站必须用tomcat/什么网站都能进的浏览器

CODE大全告诉你java是否开始没落了&#xff01; 22 岁&#xff0c;对于一个技术人来说可谓正当壮年。但对于一门编程语言来说&#xff0c;情况可能又有不同。各类编程语言横空出世&#xff0c;纷战不休&#xff0c;然而 TIOBE 的语言排行榜上&#xff0c;Java 却露出了明显的颓…...

wordpress幻灯片图片主题/企业推广策划公司

文章目录一、DockerFile是什么二、DockerFile构建的过程1、DockerFile内容基础知识语法2、Docker执行Dockerfile的大致流程3、小结三、DockerFile的保留字指令四、案例分析编写DockerFile1、Base镜像(scratch)2、案例一&#xff1a;编写centos&#xff08;1&#xff09;DockerF…...