我抓不到ConstraintError异常。在
当我运行这个:
try:
tx.run('MERGE (:Person {{name:"{name}",country:"{country}"}})'.format(name=name,country=country))
except ConstraintViolation:
pass
例外情况仍然存在。在
我试过了
^{pr2}$也限制了恐怖和暴力。在
但是,无论我试图捕捉ConstraintError还是ConstraintViolation,我都会得到以下错误:
ConstraintError: Node(5314) already exists with label `Person` and property `name` = 'SomeThing'
我该怎么处理?在
假设这个节点已经存在(为了清楚起见,我使用字符串文字而不是参数):
你提出这个要求:
^{pr2}$您将得到一个
ConstraintError
,因为这样的节点还不存在(具有两个属性值),但您也无法创建该节点(因为唯一性约束)。在可能的修复方法
如果您想强制
country
值为“USA”,不管怎样,这都应该避免ConstraintError
:或者,如果您只想设置
country
值(如果具有该name
值的节点尚不存在),则该方法应该有效:或者,如果您只想设置
country
值(如果具有该name
值的节点已经存在),则该方法应该有效:我遇到了同样的问题,并发现异常没有被命中的原因是neo4j驱动程序在会话关闭之前不会引发异常。在
上面的代码中没有,但我假设您以前打开了一个session—类似于
如果你移动会话.关闭进入try块,然后您应该命中异常
^{pr2}$相关问题 更多 >
编程相关推荐