捕获Web2Py数据库抽象层抛出的异常

时间:2013-12-09 21:53:39

标签: python-2.7 web2py

有没有办法捕获web2py的DAL引发的异常?

我们说我有以下代码:

for item in data_dict:
    db.table_name.insert(item)

如果任何项目未能正确插入,web2py将处理此项并且不会向数据库提交任何记录并创建票证。我想捕获数据库抛出的错误并输出自定义错误消息。

在try / except块中包装插入或整个for循环会插入有效记录并跳过并抛出无效错误,使数据库处于已插入某些记录而其他记录未插入的状态。这不是预期的行为。

我希望有人可以给我一个无痛的解决方案来输出自定义错误消息。我使用的是web2py 2.7.4

TIA NAV

1 个答案:

答案 0 :(得分:1)

我相信我有你正在寻找的解决方案,直接来自web2py文档: http://www.web2py.com/book/default/chapter/06#commit-and-rollback

只需捕获错误,然后发出回滚。

” 在您发出commit命令之前,实际上不会提交创建,删除,插入,截断,删除或更新操作“ 提交

>>> db.commit()

要检查它,让我们插入一条新记录:

>>> db.person.insert(name="Bob")
2

并回滚,即忽略自上次提交以来的所有操作:

>>> db.rollback()