密码查询中的多个变量(名称,标签) - py2neo

时间:2015-12-18 15:19:17

标签: python neo4j cypher py2neo

现在又遇到了另一个问题。我想创建一个可用的HTML表单,用户可以在其中输入节点的名称,并通过radioboxes选择标签 - 并在提交后在neo4j中创建。

以下作品:

result = graph.cypher.execute("CREATE (n:Test { name : '%s' })" % cypher_escape(node))

所以现在我可以使用我输入的任何名称创建一个节点,但我无法使标签生效。从文档中我知道cypher_escape只能用于1个参数,并且标签不能被参数化。

是否有一些解决方法/其他方法可以这样做,所以我可以将变量作为标签放入cypher查询?

提前致谢! :)

1 个答案:

答案 0 :(得分:3)

标签无法在Cypher中进行参数化,因此您必须在客户端代码中使用字符串连接或字符串格式来构建Cypher查询。其基本原理是查询计划可能因标签而异,因此无法缓存执行计划。

但是,您应该对属性值使用查询参数。这允许在再次执行查询时进行查询计划缓存和更好的性能:

graph.cypher.execute("CREATE (n:Test {name: {name})", parameters={"name": "Bob"})

然后为标签使用字符串格式:

label_string = "Test"
query = "CREATE (n:%s {name: {name})" % label_string
graph.cypher.execute(query, parameters={"name": "Bob"})