深入探究neo4j: 完全指南(安装、常用命令、错误汇总、python连接)
创始人
2025-05-29 21:20:26
0

目录

  • 前言
  • 一、neo4j介绍
  • 二、安装
    • 2-1、JDK安装
    • 2-2、环境变量配置
    • 2-3、安装neo4j
    • 2-4、配置环境变量
  • 三、Python连接Neo4J图数据库
  • 四、常用的Neo4j命令:
  • 五、错误汇总
    • 5-1、Neo4j报错:py2neo.errors.ProtocolError: Cannot decode response content as JSON 解决方案
    • 5-2、解决报错UnicodeDecodeError: 'gbk' codec can't decode byte 0xaf in position 81: illegal multibyte sequence
    • 5-3、解决ValueError: The following settings are not supported: {'http_port': 7687}
    • 5-4、pip install ahocorasick 无法安装的问题
  • 总结


前言

Neo4j是一个基于图形数据模型的NoSQL数据库管理系统。

一、neo4j介绍

Neo4j是一种图形数据库管理系统,它使用图形模型来存储和处理数据。它被广泛用于各种领域,包括社交网络、网络安全、生命科学、金融服务和知识管理。

  • Neo4j的图形模型由节点和边组成。节点代表实体或对象,边表示它们之间的关系。节点和边都可以拥有属性,这些属性可以是任何类型的数据。Neo4j的图形模型可以轻松地表示复杂的关系和连接,并且支持深度查询和数据可视化。
  • Neo4j提供了丰富的查询语言Cypher,它是一种用于查询图形数据的声明性语言。Cypher提供了一种易于使用的方式来查询和操作图形数据,它的语法类似于SQL。Cypher的查询可以返回节点、边、节点和边之间的关系、关系的属性等。
  • Neo4j还支持ACID事务,这使得它成为处理复杂事务的理想选择。此外,它还提供了许多高级功能,如索引、聚合、限制、排序、批量操作、过滤器等。这些功能使得Neo4j可以满足各种应用程序的需求。
  • Neo4j可以作为一个独立的数据库服务器运行,也可以作为一个嵌入式库集成到应用程序中。它支持多种编程语言和平台,包括Java、Python、.NET、Node.js和Ruby等。

总之,Neo4j是一种强大的图形数据库管理系统,它使用图形模型来存储和处理数据。它提供了丰富的查询语言、ACID事务和许多高级功能,是处理复杂数据的理想选择。

二、安装

2-1、JDK安装

下载链接:https://www.oracle.com/java/technologies/downloads/: 之后直接安装即可。
在这里插入图片描述

2-2、环境变量配置

  • 电脑->属性->高级系统设置->环境变量
  • 系统变量里,新建环境变量,命名为JAVA_HOME,变量值设置为刚才JAVA的安装路径
  • 编辑系统变量的path属性,新建-然后输入%JAVA_HOME%\bin,保存。
  • 打开命令提示符CMD(WIN+R,输入cmd),输入 java -version,若提示Java的版本信息,则证明环境变量配置成功。
  • 在这里插入图片描述

2-3、安装neo4j

下载链接:https://neo4j.com/download-center/#community: 下载之后直接解压即可,无需安装。
在这里插入图片描述

2-4、配置环境变量

  • 电脑->属性->高级系统设置->环境变量
  • 系统变量里,新建环境变量,命名为JNEO4J_HOME,变量值设置为刚才neo4j的安装路径
  • 编辑系统变量的path属性,新建-然后输入%NEO4J_HOME%\bin,保存。
  • 以管理员身份运行cmd。然后,在命令行处输入neo4j.bat console,出现如下界面说明安装成功。
    在这里插入图片描述
  • 在浏览器中输入界面中给出的网址http://localhost:7474/,显示界面后输入默认的用户名和密码neo4j。登录之后显示如下界面:
    在这里插入图片描述

三、Python连接Neo4J图数据库

安装:连接Neo4j图数据库需要使用py2neo库。Py2neo是一个Python库,提供了一个简单的接口来连接Neo4j图数据库,并使用Python代码执行各种操作。

  • 首先需要安装py2neo库,可以通过以下命令安装:pip install py2neo
  • 下面是一个示例代码,展示了如何使用Python连接Neo4J图数据库:
from py2neo import Graph, Node, Relationship, NodeMatcher# 连接数据库
graph = Graph("bolt://localhost:7687", auth=("neo4j", "password"))# 创建一个Person节点
person = Node("Person", name="Alice", age=30)# 将节点添加到数据库
graph.create(person)# 创建一个Movie节点
movie = Node("Movie", title="The Matrix", released=1999)# 将节点添加到数据库
graph.create(movie)# 创建一个Director节点
director = Node("Director", name="Lana Wachowski")# 将节点添加到数据库
graph.create(director)# 添加节点之间的关系
graph.create(Relationship(person, "ACTED_IN", movie, roles=["Trinity"]))
graph.create(Relationship(director, "DIRECTED", movie))# 查询节点
matcher = NodeMatcher(graph)
alice = matcher.match("Person", name="Alice").first()
matrix = matcher.match("Movie", title="The Matrix").first()
print(alice)
print(matrix)# 查询关系
query = "MATCH (p:Person)-[r:ACTED_IN]->(m:Movie) WHERE m.title = 'The Matrix' RETURN p, r, m"
results = graph.run(query)
for record in results:print(record)# 更新节点
alice['name'] = 'Alice Smith'
graph.push(alice)# 删除节点和关系
graph.delete(alice)
graph.delete(matrix)
graph.delete(director)# 删除已有的内容
graph.delete_all() 

这个示例代码演示了以下操作

  • 连接Neo4j数据库
  • 创建三个节点: Person, Movie, Director
  • 添加节点之间的关系: ACTED_IN, DIRECTED
  • 查询节点和关系
  • 更新节点
  • 删除节点和关系

需要注意的是,上面的示例代码只是一个简单的入门示例,实际使用中可能需要进行更多的操作和查询。如果需要更多关于py2neo的信息和文档,请访问官方文档:https://py2neo.org/

四、常用的Neo4j命令:

安装服务:bin\neo4j install-service
卸载服务:bin\neo4j uninstall-service
启动Neo4j服务器: neo4j start
停止Neo4j服务器: neo4j stop
打开Neo4j控制台: cypher-shell
创建节点: CREATE (:Label {property: value})
创建关系: MATCH (a:Label1), (b:Label2) WHERE a.property = value1 AND b.property = value2 CREATE (a)-[:RELATIONSHIP]->(b)
查询节点: MATCH (n:Label) WHERE n.property = value RETURN n
查询关系: MATCH (a:Label1)-[r:RELATIONSHIP]->(b:Label2) WHERE a.property = value1 AND b.property = value2 RETURN r
更新节点: MATCH (n:Label {property: oldValue}) SET n.property = newValue
删除节点: MATCH (n:Label {property: value}) DELETE n
删除关系: MATCH (a:Label1)-[r:RELATIONSHIP]->(b:Label2) WHERE a.property = value1 AND b.property = value2 DELETE r
显示数据库信息: CALL dbms.showCurrentUser()
显示当前数据库中所有标签: CALL db.labels()
显示当前数据库中所有关系类型: CALL db.relationshipTypes()
显示当前数据库中所有节点: MATCH (n) RETURN n
显示当前数据库中所有关系: MATCH ()-[r]->() RETURN r
显示节点的所有属性: MATCH (n:Label {property: value}) RETURN properties(n)
显示关系的所有属性: MATCH (a:Label1)-[r:RELATIONSHIP]->(b:Label2) WHERE a.property = value1 AND b.property = value2 RETURN properties(r)
显示节点的所有标签: MATCH (n:Label {property: value}) RETURN labels(n)
显示节点的所有关系类型: MATCH (a:Label1)-[r]->(b:Label2) WHERE a.property = value1 AND b.property = value2 RETURN type(r)
计算节点数量: MATCH (n:Label) RETURN count(n)
计算关系数量: MATCH ()-[r]->() RETURN count(r)
按属性值排序显示节点: MATCH (n:Label) RETURN n ORDER BY n.property ASC/DESC
按属性值排序显示关系: MATCH ()-[r]->() RETURN r ORDER BY r.property ASC/DESC
显示节点度数(入度和出度): MATCH (n:Label {property: value}) RETURN size((n)-[:RELATIONSHIP]->()), size(()-[:RELATIONSHIP]->(n))
执行聚合函数: MATCH (n:Label) RETURN sum(n.property), avg(n.property), min(n.property), max(n.property)
使用WHERE子句过滤查询结果: MATCH (n:Label) WHERE n.property >= value RETURN n
使用LIMIT子句限制查询结果数量: MATCH (n:Label) RETURN n LIMIT value
使用SKIP子句跳过查询结果的前几行: MATCH (n:Label) RETURN n SKIP value
使用WITH子句进行结果分组和传递: MATCH (a:Label1)-[:RELATIONSHIP]->(b:Label2)-[:RELATIONSHIP]->(c:Label3) WITH a, c, count(*) as count WHERE count > value RETURN a.property, c.property

五、错误汇总

5-1、Neo4j报错:py2neo.errors.ProtocolError: Cannot decode response content as JSON 解决方案

  • 创建neo4j,对数据库增删改查时的报错,解决方案如下:
# 执行build_medicalgraph.py时发生错误。
# 该错误为graph_name为空时的问题, 即在连接时需要指定name属性,则报错解除。
self.g = Graph("http://localhost:7474/browser/", auth=("user", "password"), name='neo4j')

5-2、解决报错UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xaf in position 81: illegal multibyte sequence

  • 该错误发生在读取数据时,解决方案如下:
# 在open的函数最后加上编码encoding='utf-8'即可,错误解决!
for data in open(self.data_path, encoding='utf-8'):

5-3、解决ValueError: The following settings are not supported: {‘http_port’: 7687}

  • 初次加载代码时发生这个错误,主要是因为py2neo包是新的,可以考虑降低版本或者解决方案如下:
# 初始代码如下:
self.g = Graph(     # host="",  # neo4j 搭载服务器的ip地址,ifconfig可获取到http_port=,  # neo4j 服务器监听的端口号user="",  # 数据库user name,如果没有更改过,应该是neo4jpasword="")
# 只要将上边代码格式更改为:
self.g = Graph("http://localhost:7474/browser/", auth=("user", "password"), name='neo4j')
即可。
# 也可以直接安装旧版本
pip uninstall py2neo
pip install py2neo==4.3.0 

5-4、pip install ahocorasick 无法安装的问题

# 包的名字改了,改为
pip install pyahocorasick

参考文章:
关于使用Py2neo连接Neo4j图数据库出现“ValueError: The following settings are not supported”报错的解决方案.
github开源项目:医疗知识图谱构建.
超详细neo4j安装教程.

图数据库—Neo4j使用指南.
图数据库neo4j的安装与基本使用(一).
Py2neo 手册.


总结

又是一个周五,想出去玩。😊

相关内容

热门资讯

安卓只恢复系统应用,重拾系统流... 你有没有遇到过这种情况?手机突然卡顿,或者某个应用突然罢工,你一气之下,直接开启了“恢复出厂设置”大...
安卓系统出现支付漏洞,揭秘潜在... 你知道吗?最近安卓系统可是闹出了不小的风波呢!没错,就是那个我们每天离不开的安卓系统,竟然出现了支付...
苹果换了安卓系统恢复,体验变革... 你有没有遇到过这种情况?手机里的苹果突然变成了安卓系统,而且还是那种让你摸不着头脑的恢复模式。别急,...
安卓怎么卸载系统app,轻松告... 手机里的系统应用越来越多,有时候真的让人眼花缭乱。有些应用虽然看起来很实用,但用起来却发现并不适合自...
安卓系统查看步数,揭秘日常运动... 你有没有发现,每天手机里的小秘密越来越多?今天,咱们就来聊聊安卓系统里那个悄悄记录你每一步的小家伙—...
安卓系统未来会不会,未知。 你有没有想过,那个陪伴我们手机生活的安卓系统,它的未来会怎样呢?想象每天早上醒来,手机屏幕上跳出的信...
安卓系统怎么设置截图,轻松捕捉... 亲爱的手机控们,你是不是也和我一样,有时候想记录下手机屏幕上的精彩瞬间呢?别急,今天就来手把手教你如...
安卓系统下载软件安装,安卓系统... 你有没有发现,手机里的安卓系统就像一个巨大的宝藏库,里面藏着各种各样的软件,让人眼花缭乱。今天,就让...
安卓10系统转移程序,轻松实现... 你有没有想过,当你从一台安卓手机升级到安卓10系统后,那些珍贵的照片、联系人、应用和数据怎么才能无缝...
安卓电脑强制重启系统,原因解析... 你有没有遇到过这种情况?你的安卓电脑突然间就强制重启了,屏幕上闪过一行行代码,你还没来得及保存文件,...
安卓怎么降低系统耗电,深度解析... 手机电量总是不够用,是不是你也和我一样,每天都要担心手机没电呢?别急,今天就来教你怎么给安卓手机降耗...
安卓系统的总体框架,架构与核心... 你有没有想过,你的手机里那个神奇的安卓系统,它到底是怎么运作的呢?今天,就让我带你一探究竟,揭开安卓...
谁的安卓系统好,谁家的安卓系统... 说到安卓系统,这可是个热门话题呢!你有没有想过,这么多安卓手机品牌,哪个的操作系统最让你心动?今天,...
安卓系统信付通,安全无忧的移动... 你知道吗?在安卓手机的世界里,有一个超级好用的支付工具,它就是信付通。今天,就让我带你来全方位了解一...
小米官方系统安卓包,深度解析与... 亲爱的数码爱好者们,你是否曾为手机系统而烦恼?市面上那么多手机品牌,各种操作系统让人眼花缭乱。今天,...
自制安卓手机双系统,自制安卓手... 你有没有想过,自己的手机可以同时运行两个操作系统呢?没错,就是那种安卓手机双系统!听起来是不是很酷?...
小米安卓系统怎么设置,科技前沿... 小米手机的用户们,是不是觉得安卓系统有点复杂,设置起来有点头疼呢?别担心,今天就来手把手教你如何轻松...
点歌系统支持安卓系统么,安卓用... 你有没有想过,在手机上点歌听歌,是不是也能像在KTV里那样随心所欲呢?现在,就让我来告诉你一个超级酷...
原版安卓系统刷机,解锁无限可能 你有没有想过,你的安卓手机其实可以焕然一新?没错,就是那种原汁原味的安卓系统,让你的手机重新找回当初...
欧尚改装安卓系统,打造智能驾驶... 你有没有想过,你的欧尚汽车其实也可以变身成为智能座驾呢?没错,就是那个你每天上下班的伙伴——欧尚,现...