我正在使用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]
组装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)
当获取较小的数据集从而组装较小的列表时,相同的代码可以正常工作。
现在我想知道:
答案 0 :(得分:0)
这种从数据库中检索数据的方法实际上是一种坏习惯,因为您可能会面临连接超时(客户端和服务器端),服务器OOM(内存不足)/ DOS(拒绝服务),应用程序OOM / DOS的风险以及更多。
检索大量数据的正确方法是访问page your results。本质上,返回大但可管理的数据块,并在准备就绪时请求下一个卡盘(或在处理最后一个块时异步)。