我刚刚开始使用新的用于 python 的 neo4j 驱动程序并完全陷入事务中。如何检查交易是否成功完成?据我所知,commit函数不会自动引发任何错误,例如,如果我向它提供了不正确的 Cypher 查询,我将无法获得有关此的信息。
我尝试last_result从Session对象中读取参数并想出了类似的东西:
import neo4j.v1 as neo
def db_confirm_transaction_success(session):
try:
w = list(session.last_result)
return True
except neo.CypherError as e:
session.last_result._consumed = True
return False
except neo.ResultError as e:
session.last_result._consumed = True
return False
Run Code Online (Sandbox Code Playgroud)
它有点工作......但是,它确实需要修改私有属性,而且似乎不正确/不正确。必须有一个更简单、更优雅的解决方案。
预先感谢您的帮助。
编辑:只是为了清楚说明Transaction.success属性指示事务是否应该提交或回滚。然而,例如 Cypher 错误可以在查询的执行时间被识别。