2016-04-25 9 views
0

私の簡単なコードは、neo4jのノードから属性を取得しています。py2neo Cypherクエリからデータを返すときにエラーが発生する

results = graph.cypher.execute("MATCH (m)-[:AB]->(a) " "RETURN m.searchField as origin, a.searchField as destination " "LIMIT {limit}", {"limit": 100}) nodes = [] rels = [] i = 0 for r in results: print (r)
ent1 = {"title": r.origin, "label": "entity"}

が、サーバーが返す「NameError(」グローバル名を「searchField」が定義されていない「)」確かにサイファークエリ内のsearchFieldが対象であることを私が何かを逃したが、私は困惑していますエラー。 これはまだpy2neo 2.0.8です。 ポインタありがとうございましたhj

後で編集: この質問を見る時間を割いてくれてありがとう。 2つの要素がこのエラーで私をさらに困惑させます: 1. cypherのクエリは問題なく、問題なしでneo4j-shellに期待した結果を返します 2.このコードは、ボトルをスタンドアロンとして実行するとうまくいくようです= 8080)が、Apacheサーバーの下でwsgiとして実行すると失敗します。私はそれがコードのいくつかの部分で、ユーザーまたはコンテキストの実行の問題であるかどうか疑問に思っています。

答えて

0

は、それが動作するようになりました!コードとは無関係でしたが、wsgiで提供される新しいPythonコードをリフレッシュするには、少なくともApacheのリロードが必要であることはわかりませんでした。

sudo service apache2 reload 

これで、私はダイレクトサーバーと同じ(正しい)動作を得ることができます。エラーはコードの古いバージョンの結果だった...初心者の間違い!

おかげで申し訳ありません、hj

0

ノードにsearchFieldというプロパティがありますか? そうでない場合、クエリは失敗します。

ところで、そうのようなクエリの文字列を使用する方が簡単です:

query = ''' 
MATCH (m)-[:AB]->(a) 
RETURN m.searchField as origin, a.searchField as destination 
LIMIT {limit} 
''' 
result = graph.cypher.execute(query, limit='foo') 
+0

クエリは正常であるようです。質問の追加の編集を参照してください。ありがとう! hj – hjohanns

関連する問題