我正在努力改进我的错误处理,特别是我想要处理来自pygresql的IntegrityError异常。
我收到错误消息"NameError: name 'IntegrityError‘is not defined“,所以我需要导入一些东西。这个是可能的吗?我需要导入什么?
发布于 2019-10-31 09:39:21
捕获您正在使用的模块抛出的特定异常绝对是可能的,而且几乎总是可取的。
您需要从正在使用的包中导入特定的异常,这是正确的,因为它不是python内置异常的一部分。
查看pygresql docs (around p.88),似乎大多数异常都是从pgdb模块引发的。
潜在的;
from pgdb import IntegrityError
# more code...
try:
db.insert(obj) # or whatever data access methods you have
except IntegrityError as e:
# handle the exception
print(str(e))或者它可能是pygresql模块中的pgdb模块,所以它可能是from pygresql.pgdb import IntegrityError。实际的导入路径可能会有所不同,但语法将如下所示。
发布于 2019-11-01 05:36:28
在花了大半天的时间来处理这件事之后,我发现异常是在pgdb中的Connection对象中定义的(即使您使用的是pg接口)。在本例中,我使用的是Flask的@app.errorhandler装饰器,但它仍然应该显示需要导入的内容以及如何使用它。
from pgdb import Connection
@app.errorhandler(Connection.IntegrityError)
def handle_IntegrityError(e):
return(str(e), 409)如果pygresql解决了这些问题将会很有帮助,因为它会让它不那么混乱。
https://stackoverflow.com/questions/58635632
复制相似问题