Python 在一个事务中删除和创建密码语句
我正在编写一个Python3.6应用程序,它使用Neo4j作为官方python驱动程序的后端。我是Neo4j和Cypher的新手。进入数据库的数据需要替换该数据以前的“版本”。我试图通过创建一个根节点来实现这一点,该节点指示版本。例如Python 在一个事务中删除和创建密码语句,python,database,neo4j,cypher,Python,Database,Neo4j,Cypher,我正在编写一个Python3.6应用程序,它使用Neo4j作为官方python驱动程序的后端。我是Neo4j和Cypher的新手。进入数据库的数据需要替换该数据以前的“版本”。我试图通过创建一个根节点来实现这一点,该节点指示版本。例如 MATCH (root:root_node)-[*..]->(any_node:) DETACH DELETE root, any_node CREATE(root:new_root_node) ... ... …表示我附加到新根节点的所有新数据 上述方法
MATCH (root:root_node)-[*..]->(any_node:) DETACH DELETE root, any_node
CREATE(root:new_root_node)
...
...
…
表示我附加到新根节点的所有新数据
上述方法不起作用。如何在一个事务中合并DELETE
和CREATE
语句
谢谢 单个事务中的DELETE和CREATE语句没有问题 这里有两个问题需要解决 第一个是使用
(anynode:)
。:
将变量与节点标签分开。如果存在:
,则节点标签也必须存在,并且由于此处未提供标签,因此会出现错误。要解决此问题,请完全删除:
:(任意节点)
第二个问题是CREATE(root:new\u root\u node)
。这里的问题是root
变量已经在上次匹配的范围内,因此需要使用不同的变量
此外,您的
:新的\u root\u节点
标签似乎没有什么用处,因为以前创建的用于从根节点查询数据的任何查询都需要更改以使用新标签。我感觉您可能对Neo4j标签有误解,因此快速查看可能会有所帮助。在单个事务中删除和创建语句没有问题
这里有两个问题需要解决
第一个是使用(anynode:)
。:
将变量与节点标签分开。如果存在:
,则节点标签也必须存在,并且由于此处未提供标签,因此会出现错误。要解决此问题,请完全删除:
:(任意节点)
第二个问题是CREATE(root:new\u root\u node)
。这里的问题是root
变量已经在上次匹配的范围内,因此需要使用不同的变量
此外,您的
:新的\u root\u节点
标签似乎没有什么用处,因为以前创建的用于从根节点查询数据的任何查询都需要更改以使用新标签。我感觉您可能误解了Neo4j标签的某些内容,因此快速回顾一下可能会有所帮助。谢谢您的回复。上面的代码是我的代码的一个抽象,使它在一个小空间内可读。你已经验证了我所做的应该是有效的。我将检查我的代码,确保没有出现您提到的任何语法错误。在浏览器中以EXPLAIN
为前缀运行此操作可能会有所帮助。这将允许它检查语法错误,但它实际上不会为回复运行querytank。上面的代码是我的代码的一个抽象,使它在一个小空间内可读。你已经验证了我所做的应该是有效的。我将检查我的代码,确保没有出现您提到的任何语法错误。在浏览器中以EXPLAIN
为前缀运行此操作可能会有所帮助。这将允许它检查语法错误,但实际上它不会运行查询