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

问题描述 投票:1回答:1

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

csv neo4j cypher py2neo
1个回答
0
投票

Cypher查询无法通过属性名称进行参数化。

参数可用于:

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

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

  • 财产钥匙;所以,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) 
© www.soinside.com 2019 - 2024. All rights reserved.