传递参数作为属性名称时出错。通过编写{param}将参数作为属性值传递时,我没有收到任何错误。但是在将参数作为属性名称传递的情况下,这不起作用。
这是我的代码。
query = 'Merge(c1:Customer{user_id: {user_id1},{user_id2}:{cell}})'
g.run(query, user_id1=int(row['user_id']), user_id2=str(cidx),cell=cell)
这里cidx, cell, row['user_id']
是参数。
{user_id1}
参数正常工作。
但它不会将{user_id2}
作为参数来添加属性名称
Cypher查询无法通过属性名称进行参数化。
参数可用于:
参数不能用于以下构造,因为它们构成了编译到查询计划中的查询结构的一部分:
MATCH (n) WHERE n.$param = 'something'
无效有关详细信息,请参阅Neo4j Documentation。
编辑:
您可以格式化字符串以将属性名称添加为:
query = 'Merge(c1:Customer{user_id: {user_id1}, %s :{cell}})' % str(cidx)
从run方法中删除参数user_id2
:
g.run(query, user_id1=int(row['user_id']), cell=cell)