如何基于函数参数

时间:2016-01-28 13:21:42

标签: neo4j cypher py2neo

尝试在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:输入无效' {':预期的空格或属性键名称(第2行,第38列(偏移量:46)) " MATCH(n {username:{user}})SET n。{property} = {value} RETURN n"

指向{property}。指定要设置的属性是否正确?

1 个答案:

答案 0 :(得分:0)

不,你不能设置这样的属性。

最好的方法是使用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})