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

这篇具有很好参考价值的文章主要介绍了Neo4j报错:py2neo.errors.ProtocolError: Cannot decode response content as JSON 解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

环境:neo4j-5.1.0、py2neo-2021.2.3、Neo4j Desktop-1.5.2、python3.9.13

1、创建neo4j链接,对数据库进行增删改的时候报错。

报错代码:

JSONDecodeError                           Traceback (most recent call last)
D:\anaconda3\lib\site-packages\py2neo\client\http.py in from_json(cls, status, data)
    442         try:
--> 443             content = json_loads(data, object_hook=JSONHydrant.json_to_packstream)
    444         except ValueError as error:

D:\anaconda3\lib\json\__init__.py in loads(s, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
    358         kw['parse_constant'] = parse_constant
--> 359     return cls(**kw).decode(s)

D:\anaconda3\lib\json\decoder.py in decode(self, s, _w)
    336         """
--> 337         obj, end = self.raw_decode(s, idx=_w(s, 0).end())
    338         end = _w(s, end).end()

D:\anaconda3\lib\json\decoder.py in raw_decode(self, s, idx)
    354         except StopIteration as err:
--> 355             raise JSONDecodeError("Expecting value", s, err.value) from None
    356         return obj, end

JSONDecodeError: Expecting value: line 1 column 1 (char 0)

The above exception was the direct cause of the following exception:

ProtocolError                             Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_8660\3422543364.py in <module>
      9         relation = Relationship(start_node,'hasConcept',end_node)
     10         print(relation)
---> 11         g.merge(start_node,'article_id','article_id')
     12         g.merge(end_node,'keyword','keyword')
     13         g.merge(relation,'hasConcept','keyword')

D:\anaconda3\lib\site-packages\py2neo\database.py in merge(self, subgraph, label, *property_keys)
    676         :param property_keys: property keys on which to match any existing nodes
    677         """
--> 678         self.update(lambda tx: tx.merge(subgraph, label, *property_keys))
    679 
    680     @property

D:\anaconda3\lib\site-packages\py2neo\database.py in update(self, cypher, parameters, timeout)
    443         if callable(cypher):
    444             if parameters is None:
--> 445                 self._update(cypher, timeout=timeout)
    446             elif (isinstance(parameters, tuple) and len(parameters) == 2 and
    447                     isinstance(parameters[0], Sequence) and isinstance(parameters[1], Mapping)):

D:\anaconda3\lib\site-packages\py2neo\database.py in _update(self, f, timeout)
    465             tx = None
    466             try:
--> 467                 tx = self.begin(
    468                                 # after=after, metadata=metadata, timeout=timeout
    469                                 )

D:\anaconda3\lib\site-packages\py2neo\database.py in begin(self, readonly)
    349         removed. Use the 'auto' method instead.*
    350         """
--> 351         return Transaction(self, autocommit=False, readonly=readonly,
    352                            # after, metadata, timeout
    353                            )

D:\anaconda3\lib\site-packages\py2neo\database.py in __init__(self, graph, autocommit, readonly)
    913             self._ref = None
    914         else:
--> 915             self._ref = self._connector.begin(self.graph.name, readonly=readonly,
    916                                               # after, metadata, timeout
    917                                               )

D:\anaconda3\lib\site-packages\py2neo\client\__init__.py in begin(self, graph_name, readonly)
   1357         cx = self._acquire(graph_name)
   1358         try:
-> 1359             return cx.begin(graph_name, readonly=readonly,
   1360                             # after=after, metadata=metadata, timeout=timeout
   1361                             )

D:\anaconda3\lib\site-packages\py2neo\client\http.py in begin(self, graph_name, readonly)
    197             #     raise TypeError("Transaction timeouts are not supported over HTTP")
    198             r = self._post(HTTPTransactionRef.begin_uri(graph_name))
--> 199             rs = HTTPResponse.from_json(r.status, r.data.decode("utf-8"))
    200             location_path = urlsplit(r.headers["Location"]).path
    201             tx = HTTPTransactionRef(graph_name, location_path.rpartition("/")[-1])

D:\anaconda3\lib\site-packages\py2neo\client\http.py in from_json(cls, status, data)
    443             content = json_loads(data, object_hook=JSONHydrant.json_to_packstream)
    444         except ValueError as error:
--> 445             raise_from(ProtocolError("Cannot decode response content as JSON"), error)
    446         else:
    447             return cls(status, content)

D:\anaconda3\lib\site-packages\six.py in raise_from(value, from_value)

ProtocolError: Cannot decode response content as JSON

奇怪的是,同样的代码、数据,用在python3.8.3的环境中没有报错,所以首先查看两个版本python的区别,发现json的__init__中有一些小区别,关于json解析的,手动给3.9.13的init进行修改,仍然报错,思考是否是别的问题。

2、寻找其他解决方案

参考了一个解决方案:https://blog.csdn.net/weixin_44155966/article/details/127704336

但是实际上没有解决问题,依然报错。

3、受到方案启发,认为是graph_name为空时的问题

看了上方的解决方案之后,感觉这个报错逻辑有些奇怪,实际上不是json的问题,还是连接neo4j时,指定的graph不够明确,所以在连接时指定name如下:

Neo4j报错:py2neo.errors.ProtocolError: Cannot decode response content as JSON 解决方案,Python,neo4j

 此时,再次执行控制neo4j的指令代码,就不再报错了。文章来源地址https://www.toymoban.com/news/detail-531857.html

到了这里,关于Neo4j报错:py2neo.errors.ProtocolError: Cannot decode response content as JSON 解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 知识图谱:py2neo将csv文件导入neo4j

    安装py2neo 安装 python 中的 neo4j 操作库: pip install py2neo 安装 py2neo 后我们可以使用其中的函数对 neo4j 进行操作。 图数据库 Neo4j 中最重要的就是结点和边(关系),结点之间靠边联系在一起,每个结点也有属于自己的属性。 也就是说我们在用 pyhton 操作 Neo4j 的时候只需要创造

    2024年02月20日
    浏览(43)
  • 关于5.x版本的Neo4j与py2neo的访问技巧

    先说结果。 Neo4j是可以使用py2neo来操作的。而且网上搜到的教程和方法里,首推的http连接方法可能并不是最好的,应该用 bolt 方法可能更好。 对于大多数使用  py2neo  与 Neo4j 数据库进行交互的应用程序来说,建议使用 Bolt 协议(即第二个指令)。确保您的 Neo4j 服务器配置

    2024年04月26日
    浏览(53)
  • 探索Py2neo:Python与Neo4j图数据库的交互实践

    在数据驱动的世界中,图形数据库如Neo4j成为处理复杂关系数据的强大工具。这种数据库类型以图结构存储数据,优秀地表示和查询实体间的连接关系。Py2neo,作为Neo4j的Python驱动程序,使得在Python环境中使用Neo4j变得简单而直观。以下内容,将详细介绍如何利用Py2neo在Python中

    2024年03月11日
    浏览(50)
  • 知识图谱基本工具Neo4j使用笔记 三 :Py2neo 基本增删改查使用

    每天掌握一点,创建 --修改–查询–删除 知识图谱基本工具Neo4j使用笔记 一 :入门基本操作 Python操作api py2neo 是一个Python库,用于连接和操作Neo4j图数据库。它提供了一组API,可让用户在Python中轻松地 创建 、 查询 和 操纵图形数据 。 py2neo允许用户使用 Python 代码 创建节点

    2024年02月11日
    浏览(48)
  • SySeVR环境配置:joern-0.3.1、Neo4j-2.1.5、py2neo2.0

    最近希望在基于图神经网络的漏洞检测上有所推进,准备复现文章SySeVR: A Framework for Using Deep Learningto Detect Software Vulnerabilities开源代码,基本环境配置是python库环境以及joern-0.3.1、Neo4j-2.1.5环境的配置,环境具体要求如下 假期的时候就已经完成过joern的配置,光是安装就卡了我

    2023年04月08日
    浏览(36)
  • Py之py2neo:py2neo的简介、安装、使用方法之详细攻略

    CV之DL之YOLOv8:YOLOv8的简介、安装和使用方法、案例应用之详细攻略 目录 YOLOv8的简介 1、Yolov8的概述 2、YOLOv8对比前身YOLOv5 YOLOv8的安装和使用方法 1、安装和使用 T1、采用yolov8安装和使用 第1步,安装YOLOv8 第2步,使用YOLOv8 T1、采用CLI T2、采用Python T2、采用ultralytics安装和使用

    2024年02月13日
    浏览(41)
  • py2neo 查询语句

    可以对查询结果进行进一步查询: =~是不等于的意思,.是任意字符,*是前面的字符大于等于0个。整体意思就是查到节点中name属性不以J开头的节点

    2024年02月08日
    浏览(42)
  • 知识图谱之py2neo

    介绍 Py2neo是一个客户端库和工具包,用于从Python应用程序和命令行使用Neo4j(Neo4j Graph Data Platform | Graph Database Management System)。该库同时支持 Bolt 和 HTTP,并提供高级 API、OGM、管理工具、交互式控制台、Pygments 的 Cypher 词法分析器以及许多其他功能。 安装 注:Neo4j也需要安装

    2024年02月11日
    浏览(39)
  • py2neo创建知识图谱合并结点

    上篇文章简单的构造了一个知识图谱,但是其中包含了许多重复的结点,看起来也非常乱,不清晰。科学上网之后,发现了一个 apoc 的工具,关于 apoc 是什么如何安装,这篇文章有很好的介绍 Neo4j:入门基础(三)之APOC插件_Dawn_www的博客-CSDN博客_apoc neo4j,应下载与neo4j相应版

    2023年04月12日
    浏览(86)
  • Python中py2neo库的基本使用方法

    因为需要将处理好的csv文件用neo4j存储,因此想到使用python将数据导入neo4j,就需要用到py2neo库。 安装py2neo库: 首先是建立连接: 注意:这里传入用户名和密码使用的auth元组形式 Node和Relationship可以定义对应的实例,Node第一个参数是label, 再利用graph.create()创建。打开neo4j可以

    2024年02月16日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包