/ / py2neo - python、neo4j、py2neoですべてのノードを反復処理することは可能ですか

py2neo - python、neo4j、py2neoを使ってすべてのノードを反復することは可能ですか?

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

私の最初の考えは繰り返し GraphDatabaseServiceしかし、それはうまくいきませんでした。もしpy2neoでそれをする方法がなければ、私をさせてくれる他のpythonインターフェースはありますか?

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

回答:

回答№1の場合は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)

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

ナイジェ


回答№2については4

2つの解決策のうちの1つが思い浮かぶ。暗号照会を実行する

START n=node(*) return n

もう一つは、私はPythonに慣れていないので、Javaで例を挙げようと思います

GlobalGraphOperations.at(graphDatabaseService).getAllNodes()

これは古い非推奨の方法です graphDatabaseService.getAllNodes() お勧めします。


答え№3の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