python - 如何使用 pgerror 集引发 psycopg2 ProgrammingError?
问题描述
我有一个尝试,除了我执行语句的块,但它有可能引发 psycopg2 ProgrammingError。我已经将它设置为可以很好地处理错误,但我发现它很难模拟。我需要能够设置 ProgrammingError 的 pgerror 属性,但它是只读属性。
>>> e = ProgrammingError()
>>> e.pgerror = 'an error'
Traceback (most recent call last):
File "<input>", line 1, in <module>
AttributeError: readonly attribute
我还尝试在创建错误时设置 pgerror 值
>>> e = ProgrammingError(pgerror='an error')
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: ProgrammingError() takes no keyword arguments
还有另一种方法可以设置值吗?
解决方案
我发现我可以使用 dunder setstate 来设置 pgerror 的值
e = ProgrammingError()
e.__setstate__({"pgerror": "an eror"})
raise e
然后当错误被捕获时,它会将 pgerror 属性设置为an error
推荐阅读
- java - maven项目中如何定义常用配置
- python - 将 JSON 字符串作为文件上传到 Azure 文件存储 - 换行符消失
- mysql - sql查询根据email获取好友
- r - “这些采样器不能用于并行代码”
- cassandra - 硬盘存储上的 Cassandra 性能基准
- html - 为什么文本链接和图标链接不垂直居中?
- android - 当用户通过按下设备主页按钮将前台应用程序发送到后台时,后台应用程序 UI 必须变得模糊
- java - PDFBox 2 不创建 PDF/A 文件
- angular - ChangeDetectorRef 的 detectChanges 不会触发 changedetection
- elasticsearch - 字段长度会影响弹性搜索性能吗?