11

py2neoを使用してneo4jデータベースのすべてのノードを反復処理する方法はありますか?

最初に考えたのは を繰り返すGraphDatabaseServiceことでしたが、うまくいきませんでした。py2neoでそれを行う方法がない場合、別のpythonインターフェースがありますか?

編集:私は今のところ@Nicholasの答えを受け入れていますが、誰かがジェネレータを返す方法を教えてくれれば更新します。

4

3 に答える 3

13

次のような非同期サイファーでそれを行うことをお勧めします。

    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)

もちろん、参照ノードを除外したり、クエリを微調整したりすることもできます。

にげ

于 2012-06-18T14:51:05.710 に答える
4

2 つの解決策のうちの 1 つが思い浮かびます。暗号クエリを実行するか

START n=node(*) return n

もう 1 つは、私は Python に詳しくないので、Java での例を挙げます。

GlobalGraphOperations.at(graphDatabaseService).getAllNodes()

これは、古い廃止予定者graphDatabaseService.getAllNodes()が推奨する方法です。

于 2012-06-18T02:51:21.280 に答える
4

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
于 2016-02-04T21:46:58.923 に答える