2017-02-08 8 views
0

を使用して既存のNeo4jノードを取得し、プロパティを更新するPythonプログラムを作成しています。
Neo4j Py2neoノードのプロパティを更新していません

ムービーノードのタイトルは&年です。追加するムービーのリストを含むPython辞書があります。

私は以下のオプションを試しました。ムービーノードが追加されています。しかし年属性は更新されません。

オプション#1: Py2neo OGMを使用してください。マージとプッシュを起動し、代わりに、OGMの(以下コメントコード)を使用するノードの機能を:最後に

オプション#2をコミットし、プッシュを起動し、年移入、マージを起動し、タイトルを移入、ムービーオブジェクトを作成し、トランザクションを開始します。

私は上記のオプションを使用していますが、それは私のためには機能しませんでした。 Pythonのバージョン3.5.2

コード:

try: 
tx = gdb.begin() ##gdb is Graph object 
for x in moviedict.keys(): 
m1 = Movie() 
m1.title = moviedict[x]['title'] 
tx.merge(m1) 
m1.year = moviedict[x]['year'] 
tx.graph.push(m1)  
tx.commit() 
"""Option2 for x in moviedict.keys(): 
    m1 = Node('Movie',title=moviedict[x]['title']) 
    gdb.merge(m1) 
    m1['year'] = moviedict[x]['year'] 
    gdb.push(m1) 
""" 

誰もがこの問題で私を助けることができますか?
ご協力いただき誠にありがとうございます。
よろしくお願いいたします。

答えて

0

私は例を望んでいたので、私は短いと実行可能の両方であることを、辞書を使用していない

import py2neo 
    import py2neo.ogm 

    from py2neo import Graph 
    from py2neo.ogm import GraphObject, Property 

    class Movie(GraphObject): 
     __primarykey__ = "title" 

     title = Property() 
     released = Property() 

    def authenticateAndConnect(): 
     py2neo.authenticate('localhost:7474', 'user', 'password') 
     return Graph('http://localhost:7474/default.graphdb/data/')  

    def foo(): 
     graph = authenticateAndConnect() 
     movie = Movie.select(graph).where("_.title = 'The Matrix Reloaded'").first() 
     movie.released = 2017 
     graph.push(movie) 

    if __name__ == '__main__': 
     foo() 
+0

ありがとうございました。実際には、マージを使用してムービーが存在しない場合は更新または追加しようとしています。続いてpushを押してムービーを追加します。あなたのコードは更新用に機能します。 –

関連する問題