Если я сделаю что-то вроде этого:
from py2neo import Graph
graph = Graph()
stuff = graph.cypher.execute("""
match (a:Article)-[p]-n return a, n, p.weight
""")
в базе данных с большим количеством статей и ссылок запрос занимает много времени и использует всю память моей системы, предположительно потому, что он копирует весь набор результатов в память за один раз. Есть ли какая-то версия на основе курсора, в которой я мог бы перебирать результаты по одному, не имея их всех в памяти одновременно?
ИЗМЕНИТЬ
Я нашел функцию stream
:
stuff = graph.cypher.stream("""
match (a:Article)-[p]-n return a, n, p.weight
""")
это похоже на то, что я хочу в соответствии с документацией, но теперь я получаю ошибку тайм-аута (py2neo.packages.httpstream.http.SocketError: timed out
), после чего сервер перестает отвечать на запросы, пока я не убью его с помощью kill -9
.