首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从pygresql中捕获特定的异常?

如何从pygresql中捕获特定的异常?
EN

Stack Overflow用户
提问于 2019-10-31 09:06:31
回答 2查看 218关注 0票数 1

我正在努力改进我的错误处理,特别是我想要处理来自pygresql的IntegrityError异常。

我收到错误消息"NameError: name 'IntegrityError‘is not defined“,所以我需要导入一些东西。这个是可能的吗?我需要导入什么?

EN

回答 2

Stack Overflow用户

发布于 2019-10-31 09:39:21

捕获您正在使用的模块抛出的特定异常绝对是可能的,而且几乎总是可取的。

您需要从正在使用的包中导入特定的异常,这是正确的,因为它不是python内置异常的一部分。

查看pygresql docs (around p.88),似乎大多数异常都是从pgdb模块引发的。

潜在的;

代码语言:javascript
复制
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。实际的导入路径可能会有所不同,但语法将如下所示。

票数 0
EN

Stack Overflow用户

发布于 2019-11-01 05:36:28

在花了大半天的时间来处理这件事之后,我发现异常是在pgdb中的Connection对象中定义的(即使您使用的是pg接口)。在本例中,我使用的是Flask的@app.errorhandler装饰器,但它仍然应该显示需要导入的内容以及如何使用它。

代码语言:javascript
复制
from pgdb import Connection

@app.errorhandler(Connection.IntegrityError)
def handle_IntegrityError(e):
  return(str(e), 409)

如果pygresql解决了这些问题将会很有帮助,因为它会让它不那么混乱。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58635632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档