密码查询中的多个变量(名称,标签)-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"})
现在遇到另一个问题。我想创建一个工作 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"})