Как установить свойство на узле на основе аргумента функции

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

def updateUserProfile(self, property, value):

    query = """
    MATCH (n { username: {user} }) SET n.{property} = {value} RETURN n
    """

    return graph.cypher.execute(query, user=self.username, property=property, value=value)

Но я получаю сообщение об ошибке py2neo.cypher.error.statement.InvalidSyntax: Invalid input '{': ожидаемый пробел или имя ключа свойства (строка 2, столбец 38 (смещение: 46)) "MATCH (n {username: {user} }) SET n.{свойство} = {значение} RETURN n"

Он указывает на {свойство}. Правильно ли указывать свойство для установки таким образом?


person jas    schedule 28.01.2016    source источник


Ответы (1)


Нет, вы не можете установить такие свойства.

Лучший способ сделать это - использовать dict для ваших свойств:

def updateUserProfile(self, property, value):

    query = """
    MATCH (n { username: {props}.user }) SET n += {props} RETURN n
    """
    props = {}
    props["user"] = self.username
    props[property] = value
    return graph.cypher.execute(query, {"props": props})
person Christophe Willemsen    schedule 28.01.2016