Neo4j Py2neo没有更新节点属性

时间:2017-02-08 03:33:47

标签: neo4j py2neo

编写python程序以获取现有的Neo4j节点并使用py2neov3 package更新属性。

电影节点有标题&年财产。有一个包含要添加的电影列表的python字典。

我尝试过以下选项,电影节点正在添加。但是年份财产没有更新。

选项#1:使用Py2neo OGM。启动事务,创建Movie对象,填充标题,调用合并,填充年份,调用push,最后提交

选项#2:使用Node函数,调用merge和push,而不是OGM(下面的注释代码)。

我已完成上述选项,但它对我不起作用。 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)
 """

有人可以帮我解决这个问题吗? 非常感谢您的帮助 最诚挚的问候。

1 个答案:

答案 0 :(得分: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()