neo4j - 更改节点属性
neo4j -changing node properties
我正在尝试创建一个社交网络,这是我的第一次网络体验。
我正在使用 Neo4j 数据库和 py2neo 模块。
现在我想从我的数据库中找到一个节点并更改它的一些属性。
我正在使用下面的代码,我可以 运行 它没有错误。但它不会改变我的数据库中的任何内容,我不知道为什么......
如果可以,请帮助我。
from py2neo import Graph
graph=Graph()
def edit_name(Uname,name):
person=graph.merge_one("Person","username",Uname)
person.cast(fname=name)
merge_one
将 return 匹配节点,或者,如果不存在匹配节点,则创建并 return 一个新节点。因此,在您的情况下,匹配的节点可能已经存在。
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()
我正在尝试创建一个社交网络,这是我的第一次网络体验。 我正在使用 Neo4j 数据库和 py2neo 模块。 现在我想从我的数据库中找到一个节点并更改它的一些属性。 我正在使用下面的代码,我可以 运行 它没有错误。但它不会改变我的数据库中的任何内容,我不知道为什么...... 如果可以,请帮助我。
from py2neo import Graph
graph=Graph()
def edit_name(Uname,name):
person=graph.merge_one("Person","username",Uname)
person.cast(fname=name)
merge_one
将 return 匹配节点,或者,如果不存在匹配节点,则创建并 return 一个新节点。因此,在您的情况下,匹配的节点可能已经存在。
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()