关于5.x版本的Neo4j与py2neo的访问技巧

先说结果。 Neo4j是可以使用py2neo来操作的。而且网上搜到的教程和方法里,首推的http连接方法可能并不是最好的,应该用 bolt 方法可能更好。

对于大多数使用 py2neo 与 Neo4j 数据库进行交互的应用程序来说,建议使用 Bolt 协议(即第二个指令)。确保您的 Neo4j 服务器配置为接受来自客户端的 Bolt 连接,并且端口号(默认为 7687)没有被防火墙或其他网络策略阻止。

  1. test_graph = Graph("http://localhost:7474/", auth=("neo4j","password"))

    这句指令使用 HTTP 协议连接到运行在本地(localhost)的 Neo4j 数据库,端口号为 7474。HTTP 是 Neo4j 早期版本中使用的一种通信协议,它通常用于 Neo4j 的 Web 界面和 REST API 访问。然而,对于使用 py2neo 的情况,HTTP 协议通常不是首选,因为它可能不支持所有的 Neo4j 功能,并且在性能上可能不如其他协议。

  2. test_graph = Graph("bolt://localhost:7687", auth=("neo4j","password"))

    这句指令使用 Bolt 协议连接到运行在本地(localhost)的 Neo4j 数据库,端口号为 7687。Bolt 是 Neo4j 的二进制协议,专为高性能和高效的数据传输而设计。它是 Neo4j 3.0 及更高版本中的默认和推荐协议,提供了更好的性能和更丰富的功能支持。

#-------------------------------------------------------------------------------------------

事情的开端是因为最近又在做知识图谱,翻之前的程序时,发现了一个问题,就是py2neo操作Neo4j就会崩,pycharm里提示的问题我也没看懂。问了百度、一言、ChatGPT,都没有得到靠谱的答案,都说可能是5.x的Neo4j不能被py2neo支持

问题很奇怪。去年我肯定是通过py2neo往Neo4j的库里更新了3万多条记录的。从命令行启动Neo4j,从浏览器查看是可以看到数据的。

实际上直到现在我也没搞明白,为啥以前的代码不能用了。问题是我没更新过Neo4j,怎么就不能用了呢?跟踪代码运行的时候,发现py2neo的 init.py中

复制代码
使用
test_graph = Graph("http://localhost:7474/", auth=("neo4j","password")) 
作为方法初始连接, 操作数据库时
def auto_run(self, cypher, parameters=None, graph_name=None, 
             readonly=False, # after=None, metadata=None, timeout=None )

中graph_name 是空的

换成bolt方法连接以后,就好了。

查到这位仁兄(danssion)写的挺详细,但是他说5.x不能用py2neo了,我一直觉得不对,因为我之前的确导入数据并使用了。Neo4j是可以使用py2neo来操作的。仍然要感谢danssion的梳理。

【原创】Neo4J 与 py2neo 版本关系_neo4j版本和python版本有关系吗-CSDN博客

相关推荐
曾几何时`7 小时前
Neo4j启动
数据库·neo4j
欧阳秦穆3 天前
Neo4j desktop 2.0.1版本如何安装apoc、gds等插件
neo4j
路溪非溪3 天前
Tensorflow的安装记录
人工智能·tensorflow·neo4j
一屉大大大花卷3 天前
初识Neo4j之图数据库(二)
数据库·neo4j
一屉大大大花卷5 天前
初识Neo4j之入门介绍(一)
数据库·neo4j
AustinCyy7 天前
【环境配置】Neo4j Community Windows 安装教程
windows·neo4j
萧鼎7 天前
深度探索 Py2neo:用 Python 玩转图数据库 Neo4j
数据库·python·neo4j
背太阳的牧羊人7 天前
Cypher 是 Neo4j 专用的查询语言
neo4j
lishaoan777 天前
使用tensorflow的线性回归的例子(九)
tensorflow·线性回归·neo4j
背太阳的牧羊人7 天前
Neo4j 的向量搜索(Neo4jVector)和常见的向量数据库(比如 Milvus、Qdrant)之间的区别与联系
数据库·neo4j·milvus