如何在 py2neo 中将参数作为 属性 名称传递?

How to pass parameter as property name in py2neo?

我在将参数作为 属性 名称传递时出错。通过编写 {param} 将参数作为 属性 值传递时,我没有收到任何错误。但这在将参数作为 属性 name.

传递的情况下不起作用

这是我的代码。

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 queries cannot be parametrized by Property names.

参数可用于:

  • 文字和表达式
  • 节点和关系 ID
  • 仅适用于显式索引:索引值和查询

参数不能用于以下构造,因为它们构成编译到查询计划中的查询结构的一部分:

  • 属性 键;所以,MATCH (n) WHERE n.$param = 'something' 无效

  • 关系类型

  • 标签

参考Neo4j Documentation了解更多详情。

编辑:

您可以格式化字符串以添加 属性 名称为:

query = 'Merge(c1:Customer{user_id: {user_id1}, %s :{cell}})' % str(cidx)

从 运行 方法中删除参数 user_id2:

g.run(query, user_id1=int(row['user_id']), cell=cell)