2017-11-03 19 views
0

Flaskでクエリリクエストに基づいてリレーションシップを作成する必要があります。 私の要求のクエリがあるとしますクエリリクエストに基づいてneo4jでリレーションシップを作成する方法

http://0.0.0.0:8888/purchased/sbk/24 

フラスコ内の私の要求ハンドラは以下の通りです:

@app.route('/purchased/<username>/<product_id>', methods=['get']) 
def create_cm(username,product_id): 
    session = driver.session() 
    session.run("MATCH (a:Person),(b:Product)" 
       "WHERE a.name= 'username' AND b.id= 'product_id'" 
       "CREATE (a)-[:PURCHASED]->(b)") 
    session.close() 
    return 'OK' 

私は、ブラウザのリターンメッセージ「OK」を取得するが、私はすべての関係を見ることができませんneo4j。私がここで紛失していることを喜んで知らせてくれます。

+1

はフラスコ外問合せ作業をしていますか?そうであれば、Flaskで何をするかを照会の最後に 'RETURN count(*)'を置いて確認し、何らかの関係が作成されているかどうか確認することができます。 –

+0

@ GaborSzarnyasさんは、フラスコの外で作業しているクエリの意味を教えてください。私のコードはFlaskのみであり、Nodeの作成などの他の作業はうまく動作します。私は、別のWebサービス(質問の中で言及されているように)が私のWebサービスに当たると、neo4jで関係を作成することができません。 – Sbk3824

+0

'RETURN count(*)'しようとすると構文エラーが発生します。 – Sbk3824

答えて

0

クエリ内のusername & product_idは文字列であり、変数ではありません。

あなたは、このコードを試すことができます:

@app.route('/purchased/<username>/<product_id>', methods=['get']) 
def create_cm(username,product_id): 
    session = driver.session() 
    session.run("MATCH (a:Person),(b:Product) WHERE a.name=$username AND b.id=$product_id CREATE (a)-[:PURCHASED]->(b)", username=username, product_id=product_id) 
    session.close() 
    return 'OK' 

乾杯

+0

@logsimaこれは正常に動作しています。重複関係の作成を避けるために、CREATEをMERGEに変更しました。ありがとう:) – Sbk3824

+0

product_idは数字と文字で構成されているので、ここでは正常だと思います。とにかくこのクエリを改善できるかどうか教えてください。 – Sbk3824

関連する問題