实现Python将csv数据导入到Neo4j

实现Python将csv数据导入到Neo4j

目录

一、获取数据集

1.1 获取数据集

1.2 以“记事本”方式打开文件

1.3  另存为“UTF-8”格式文件

1.4 选择“是”

二、 打开Neo4j并运行

2.1 创建新的Neo4j数据库

2.2 分别设置数据库名和密码

​编辑 2.3 启动Neo4j数据库

2.4 打开Neo4j数据库

 2.5 运行查看该数据库是否为空

三、打开Python创建项目 

3.1 创建一个包,存项目

3.2 创建一个项目

3.3 检查自己的依赖是否完全

3.3.1 点击“File”-“Settings”

3.3.2  找到“Project:PythonProject”-"Python Interpreter"

3.4 导入相关依赖,打开Terminal

3.5 输入命令

四、实现Python连接Neo4j 

4.1 Python连接Neo4j测试

4.2 导入数据集

4.3 处理数据集

4.4 初始化neo4j并合并数据集关系

4.5 把节点导入到Neo4j中

4.6 运行代码后,查看Neo4j是否有节点

4.7 导入节点关系

4.8 查看Neo4j

五、该过程出现的Bug

5.1 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc8 in position 0: invalid continuation byte 


一、获取数据集

1.1 获取数据集

《我是刑警》的人物关系数据集资源https://download.ZEEKLOG.net/download/Z0412_J0103/90160496

1.2 以“记事本”方式打开文件

1.3  另存为“UTF-8”格式文件

1.4 选择“是”

二、 打开Neo4j并运行

2.1 创建新的Neo4j数据库

2.2 分别设置数据库名和密码

 2.3 启动Neo4j数据库

2.4 打开Neo4j数据库

 2.5 运行查看该数据库是否为空

match(n) return n;

三、打开Python创建项目 

3.1 创建一个包,存项目

3.2 创建一个项目

3.3 检查自己的依赖是否完全

3.3.1 点击“File”-“Settings”

3.3.2  找到“Project:PythonProject”-"Python Interpreter"

检查是否导入了“neo4j”、“pandas”、”py2neo

3.4 导入相关依赖,打开Terminal

3.5 输入命令

pip install neo4j-python-driver pandas py2neo

四、实现Python连接Neo4j 

4.1 Python连接Neo4j测试



其中的”123456“是你刚刚建立的Neo4j密码,此处只需要修改该密码就可以了

4.2 导入数据集



其中地址需要改变,其它地方都不用变

运行结果如下

4.3 处理数据集



 执行结果如下

4.4 初始化neo4j并合并数据集关系

# 初始化一个空列表来存储所有的元组 tuple_total = [] # 迭代DataFrame的每一行 for index, row in invoice_data.iterrows(): ties_total = [row['人物'], row['关系'], row['关系人物']] # 将所有元组添加到结果列表中 tuple_total.extend([ties_total]) print(tuple_total)

4.5 把节点导入到Neo4j中

#把节点导入neo4j中 def create_node(people): for name in people: node_1 = Node('人物', name = name) graph.create(node_1) create_node(people)

4.6 运行代码后,查看Neo4j是否有节点

4.7 导入节点关系

matcher = NodeMatcher(graph) # 导入关系 for i in range(0, len(tuple_total)): name_1 = matcher.match('人物', name=tuple_total[i][0]).first() name_2 = matcher.match('人物', name=tuple_total[i][2]).first() rel = tuple_total[i][1] relationship = Relationship(name_1, rel, name_2) graph.create(relationship)

4.8 查看Neo4j

 

五、该过程出现的Bug

5.1 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc8 in position 0: invalid continuation byte 

解决过程:

是因为你的CSV文件没有设置为”UTF-8“ ,具体过程看本文的1.2和1.3过程

上一篇文章:ZEEKLOG中群发功能及自动回复设置教程_ZEEKLOG粉丝群发https://blog.ZEEKLOG.net/Z0412_J0103/article/details/144074981下一篇文章: JDK11下载安装和配置超详细过程-ZEEKLOG博客https://blog.ZEEKLOG.net/Z0412_J0103/article/details/144451166?sharetype=blogdetail&sharerId=144451166&sharerefer=PC&sharesource=Z0412_J0103&spm=1011.2480.3001.8118

Read more

gpt-oss-20b-WEBUI功能全测评,Ollama集成太方便了

gpt-oss-20b-WEBUI功能全测评,Ollama集成太方便了 你有没有试过这样的场景:刚下载完一个大模型镜像,打开网页界面却卡在加载页;调了半小时参数,生成结果还是断句生硬、逻辑跳脱;想换模型又得重装环境,显存爆红、报错满屏……别急,这次我们实测的 gpt-oss-20b-WEBUI 镜像,把“开箱即用”四个字真正落到了实处——双卡4090D上一键启动,vLLM加速跑满吞吐,网页界面清爽无干扰,最关键的是,它和Ollama的集成不是“能连”,而是“连得毫无负担”。 这不是一个需要你查文档、改配置、编译依赖的实验性项目。它是一套已经调优完毕、开网页就能聊、敲命令就能跑、导出API就能集成的完整本地推理方案。本文将带你从零开始,真实走一遍它的全部能力:界面交互是否顺滑?响应速度到底多快?支持哪些实用功能?Ollama集成究竟有多省事?以及——它到底适不适合你手头那个还没上线的AI小项目? 1. 镜像初体验:三步启动,五秒进对话页 很多WEBUI镜像的“快速启动”,往往藏在一堆前置条件里。而gpt-oss-20b-WEBUI的启动路径异常干净,我们全程在ZEEKLOG星图

前端数据库 IndexedDB 详解:构建强大的离线Web应用

前端数据库 IndexedDB 详解:构建强大的离线Web应用 * 引言:为什么需要前端数据库? * IndexedDB核心概念解析 * 1. 数据库(Database) * 2. 对象存储(Object Store) * 3. 索引(Index) * 4. 事务(Transaction) * 5. 游标(Cursor) * 完整代码示例:实现一个联系人管理器 * 1. 初始化数据库 * 2. 添加联系人 * 3. 查询联系人 * 通过ID查询 * 通过索引查询 * 4. 更新联系人 * 5. 删除联系人 * 6. 高级查询:使用游标和范围 * IndexedDB最佳实践 * IndexedDB的浏览器支持情况 * 使用第三方库简化开发 * 常见应用场景 * 总结 引言:为什么需要前端数据库? 在现代Web开发中,我们经常需要处理大量结构化数据。传统的localStorage和sessionStorage虽然简单易用,

Trae Solo+豆包Version1.6+Seedream4.0打造“AI识菜通“

Trae Solo+豆包Version1.6+Seedream4.0打造“AI识菜通“

Trae Solo+豆包Version1.6+Seedream4.0打造"AI识菜通" 摘要 在人工智能技术迅猛发展的今天,大模型正以前所未有的深度与广度渗透进日常生活的各个场景。从智能客服到内容创作,从代码生成到图像理解,AI 正在重塑人与信息、人与服务之间的交互方式。而在餐饮这一高频、高感知的领域,语言障碍与菜单理解困难长期困扰着跨国旅行者、留学生乃至本地食客——面对一张满是陌生文字或模糊排版的菜单,如何快速识别菜品、理解其风味、并准确下单?正是在这一现实痛点驱动下,我们开发了“AI识菜通”——一款融合多模态感知、跨语言理解与生成式视觉的智能点餐助手。 “AI识菜通”的核心目标,是让用户只需上传一张任意语言的菜单图片,即可在数秒内获得结构化、本地化(中文)的菜品列表,每道菜附带精准描述与逼真图像,并支持一键加入购物车、生成可直接向服务员展示的点餐字符串。这一看似简单的流程背后,实则涉及图像识别、多语言翻译、语义理解、图像生成、状态管理与前端交互等多个技术模块的协同。而要让这些模块高效、准确、一致地工作,关键不在于单个模型的性能上限,

前端文件上传方案:别再只用input type=file了

前端文件上传方案:别再只用input type=file了

前端文件上传方案:别再只用input type=file了 毒舌时刻 这代码写得跟网红滤镜似的——仅供参考。 各位前端同行,咱们今天聊聊前端文件上传。别告诉我你还在用原生的input上传大文件,那感觉就像在用小水管灌满游泳池——慢得让人绝望。 为什么你需要文件上传方案 最近看到一个项目,上传100MB的文件直接卡死浏览器,没有任何进度提示,我差点当场去世。我就想问:你是在做上传还是在做浏览器杀手? 反面教材 <!-- 反面教材:原生文件上传 --> <input type="file" onchange="uploadFile(this.files[0])" /> <script> function uploadFile(file) { const formData = new FormData(