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