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

Multiple variables in cypher query (name, label) - py2neo

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

以下作品:

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

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

是否有一些解决方法/其他方法可以将变量作为密码查询的标签?

提前致谢! :)

无法在 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"})