如何保持Neo4j螺栓会话打开?

Thi*_*uer 5 python neo4j cypher

我正在使用Neo4j 3.1.1社区版.我正在尝试使用官方支持的python驱动程序通过python从db获取大约8000万个条目.python脚本针对localhost运行,即与Neo4j在同一台机器上,而不是通过网络运行.访问Neo4j一切正常,直到它成为现实:

result = session.run("match (n:Label) return n.Property as property")
property_list = [record["property"] for record in result]
Run Code Online (Sandbox Code Playgroud)

property_list使用错误声明从本质上组装失败:

File "...\neo4j\bolt\connection.py", line 124, in fill raise ServiceUnavailable("Failed to read from connection %r" % (self.address,)) neo4j.bolt.connection.ServiceUnavailable: Failed to read from connection Address(host='127.0.0.1', port=7687)

获取较小的数据集从而组装较小的列表时,相同的代码可以正常工作.

现在我想知道:

  1. 是否有保持螺栓会话打开的选项?
  2. 我是否必须以某种方式配置/调整Neo4j服务器才能启用此类交易?
  3. 还是有一种神奇的"第三条道路"来完成它?

Tez*_*zra 0

这种从数据库检索数据的方法实际上是一种不好的做法,因为您可能会面临连接超时(客户端和服务器端)、服务器 OOM(内存不足)/DOS(拒绝服务)、应用程序 OOM/DOS 等风险。

检索大量数据的正确方法是对结果进行分页。本质上,返回大量但可管理的数据块,并在准备好后请求下一个数据块(或在处理最后一个数据块时异步)。