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

时间:2019-04-11 10:50:10

标签: csv neo4j cypher py2neo

将参数作为属性名称传递时出现错误。通过编写{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}作为参数

1 个答案:

答案 0 :(得分:0)

  

密码查询无法通过属性名称进行参数设置。

参数可用于:

  • 文字和表达方式
  • 节点和关系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)