使用py2neo更新节点属性不适用于远程服务器

时间:2015-04-13 21:07:43

标签: python neo4j cypher py2neo

我的Neo4j数据库中有一个节点,我使用py2neo接口的find_one()方法检索它。

profile = graph.find_one('Facebook','fb_id', fb_id)
profile['nb_friends'] = nb_friends  # a list of posts
profile.push()  

上述语句在更新本地Neo4j数据库时工作正常,但在使用远程Neo4j服务器时没有(没有更改)。

但是,如果我运行原始Cypher查询,它在本地和远程都可以工作。

graph.cypher.execute('MATCH (n:Facebook {fb_id:{ID}}) SET n.nb_friends = {FR} RETURN n',{'ID':fb_id,'FR':nb_friends})

知道为什么会发生这种情况以及如何解决这个问题?

注意:我对服务器配置所做的唯一修改是禁用身份验证。

2 个答案:

答案 0 :(得分:0)

如果本地/远程方面在这里具有直接意义,我会感到惊讶。 Py2neo不知道或关心服务器的位置,也不为localhost采用不同的代码路径。

我建议您确保在两台服务器上使用相同的版本,您的连接URI都具有相同的路径(应以尾部斜杠结尾),并且两者的数据相似。

你可能也遇到过这个错误: https://github.com/nigelsmall/py2neo/issues/395

不支持空列表作为属性值,并且py2neo有一个错误,使push在尝试此操作时无声地失败。在下一个版本中将为此提出异常。

答案 1 :(得分:0)

我知道这是一个老问题,但我遇到了与py2neo 3类似的问题(graph.push()无声地失败)。事实证明,我使用的是我在事故中安装的旧版Neo4j(2.1.7)。尝试下载新版本并重试。