Python 是否可以使用py2neo遍历所有节点

Python 是否可以使用py2neo遍历所有节点,python,neo4j,py2neo,Python,Neo4j,Py2neo,有没有一种方法可以使用py2neo迭代neo4j数据库中的每个节点 我的第一个想法是通过GraphDatabaseService进行迭代,但这不起作用。如果没有一种方法可以使用py2neo,那么是否有另一个python接口可以让我使用它 编辑:我现在接受@Nicholas的答案,但如果有人能给我一种返回生成器的方法,我会更新它。想到两种解决方案之一。或者做一个密码查询 START n=node(*) return n 另一个,我不熟悉python,所以我将给出Java中的示例 GlobalGr

有没有一种方法可以使用py2neo迭代neo4j数据库中的每个节点

我的第一个想法是通过
GraphDatabaseService
进行迭代,但这不起作用。如果没有一种方法可以使用py2neo,那么是否有另一个python接口可以让我使用它


编辑:我现在接受@Nicholas的答案,但如果有人能给我一种返回生成器的方法,我会更新它。

想到两种解决方案之一。或者做一个密码查询

START n=node(*) return n
另一个,我不熟悉python,所以我将给出Java中的示例

GlobalGraphOperations.at(graphDatabaseService).getAllNodes()

这是旧的不推荐使用的
graphDatabaseService.getAllNodes()
推荐的方法

我建议使用异步密码执行此操作,例如:

    from py2neo import neo4j, cypher

    graph_db = neo4j.GraphDatabaseService()

    def handle_row(row):
        node = row[0]
        # do something with `node` here

    cypher.execute(graph_db, "START z=node(*) RETURN z", row_handler=handle_row)
当然,您可能希望排除引用节点或以其他方式调整查询


Nige

对于py2neo的较新版本,接受的版本不再有效。而是使用:

from py2neo import Graph

graph = Graph("http://user:pass@localhost:7474/db/data/")

for n in graph.cypher.stream("START z=node(*) RETURN z"):
    //do something with node here
    print n

谢谢执行cypher查询
START n=node(*)return n
返回一个列表,但找不到与第二个答案类似的结果。现在,我接受返回生成器的答案。我已经考虑了几个实现生成器的选项,以迭代数据库中的所有节点。不幸的是,如果不(I)在应用程序代码遍历所有项之前保持HTTP连接打开,或者(ii)事先将所有项加载到内存中,我认为没有办法实现这一点。生成器方法的关键问题是遍历必须由使用生成器的代码控制,而不是由提供生成器的代码控制。这就是为什么我觉得回调机制更适合用于此目的。谢谢,看起来这很有效。我假设对于一个大型图,它不会一次将它们全部加载到python内存中,对吗?对。异步Cypher执行提交从HTTP响应流接收的每一行进行处理。从py2neo 1.6(将于2013年10月发布)开始,这将有可能通过流式Cypher查询结果集和标准Python迭代实现。它给出了错误
TypeError:is not JSON serializable
。py2neo最新版本的等效值是什么?看起来这个在py2neo 4中不起作用,因为它给出了如下错误
AttributeError:“Graph”对象没有属性“cypher”
:(