现在又遇到了另一个问题。我想创建一个可用的HTML表单,用户可以在其中输入节点的名称,并通过radioboxes选择标签 - 并在提交后在neo4j中创建。
以下作品:
result = graph.cypher.execute("CREATE (n:Test { name : '%s' })" % cypher_escape(node))
所以现在我可以使用我输入的任何名称创建一个节点,但我无法使标签生效。从文档中我知道cypher_escape
只能用于1个参数,并且标签不能被参数化。
是否有一些解决方法/其他方法可以这样做,所以我可以将变量作为标签放入cypher查询?
提前致谢! :)
答案 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"})