2015-03-20 6 views
0

Я пытаюсь создать социальную сеть и ее первое веб-приложение. Я использую базу данных Neo4j и модуль py2neo. Теперь я хочу найти узел из моей базы данных и изменить некоторые его свойства. Я использую приведенный ниже код, и я могу запустить его без ошибок. Но он ничего не меняет в моей базе данных, и я понятия не имею, почему ... , пожалуйста, помогите мне, если сможете.neo4j - изменение свойств узла

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

ответ

0

Cast предназначен для литья общих объектов Python в объекты py2neo. Например, если вы хотите, чтобы бросить словарь Python на объект py2neo узла, вы могли бы сделать:

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() 
0

merge_one либо возвращает соответствующий узел, или, если соответствующий узел не существует, создать и вернуть новый. Итак, в вашем случае соответствующий узел, вероятно, уже существует.

+0

да она существует. и когда я возвращаю узел, он возвращается правильно. , но «person.cast (fname = name)» работает неправильно – ali73

Смежные вопросы