我试图建立一个社交网络,这是我的第一次网络体验。 我使用的是Neo4j数据库和py2neo模块。 现在我想从我的数据库中找到一个节点并更改它的一些属性。 我使用下面的代码,我可以毫无错误地运行它。但它不会改变我的数据库中的任何内容,我不知道为什么...... 如果可以,请帮助我。
from py2neo import Graph
graph=Graph()
def edit_name(Uname,name):
person=graph.merge_one("Person","username",Uname)
person.cast(fname=name)
答案 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()