neo4j -changing节点属性

时间:2015-03-20 15:01:17

标签: neo4j social-networking py2neo

我试图建立一个社交网络,这是我的第一次网络体验。 我使用的是Neo4j数据库和py2neo模块。 现在我想从我的数据库中找到一个节点并更改它的一些属性。 我使用下面的代码,我可以毫无错误地运行它。但它不会改变我的数据库中的任何内容,我不知道为什么...... 如果可以,请帮助我。

from py2neo import Graph
graph=Graph()
def edit_name(Uname,name):
person=graph.merge_one("Person","username",Uname)
person.cast(fname=name)

2 个答案:

答案 0 :(得分:0)

merge_one将返回匹配的节点,或者,如果不存在匹配的节点,则创建并返回一个新节点。因此,在您的情况下,匹配节点可能已经存在。

答案 1 :(得分:0)

Cast用于将常规Python对象转换为py2neo对象。例如,如果要将Python字典强制转换为py2neo Node对象,则执行以下操作:

from py2neo import Graph, Node
graph = Graph()

d = {'name':'Nicole', 'age':24}
nicole = Node.cast('Person', d)

但是,您仍然需要将nicole传递给Graph.create才能在数据库中实际创建节点:

graph.create(nicole)

然后,如果您稍后使用Graph.merge_one从数据库中检索此节点并想要更新属性:

nicole = graph.merge_one('Person', 'name', 'Nicole')
nicole['hair'] = 'blonde'

然后您需要对图表进行push次更改; cast不适合更新已经是py2neo Node对象的属性:

nicole.push()

TL; DR:

from py2neo import Graph
graph = Graph()

def edit_username(old_name, new_name):
    person = graph.merge_one('Person', 'username', old_name)
    person['username'] = new_name
    person.push()