是否可以使用py2neo迭代所有节点

时间:2012-06-18 02:09:32

标签: python neo4j py2neo

有没有办法使用py2neo迭代neo4j数据库中的每个节点?

我的第一个想法是迭代GraphDatabaseService,但这不起作用。如果没有办法用py2neo做,那么还有另一个python接口可以让我吗?

编辑:我现在接受@ Nicholas的答案,但如果有人能给我一个返回发电机的方法,我会更新它。

3 个答案:

答案 0 :(得分:12)

我建议使用异步Cypher,例如:

    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

答案 1 :(得分:4)

我想到了两种解决方案中的一种。要么进行密码查询

START n=node(*) return n

另一个,我不熟悉python所以我打算用Java来举例说明

GlobalGraphOperations.at(graphDatabaseService).getAllNodes()

旧的弃用graphDatabaseService.getAllNodes()建议的方式。

答案 2 :(得分:2)

对于较新版本的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