python - 如何在捕获其他异常 Python 3 时捕获 MySql 插入异常:“1062 (23000): Duplicate entry”?
问题描述
我正在尝试捕获并计算重复条目异常:
1062 (23000): Duplicate entry '' for key 'tabale.item_UNIQUE'
这是将生成重复项异常的代码:
stmt='INSERT INTO table.items(item) VALUES("iteratorI");'
try:
mc.execute(stmt)
conn.commit()
except pymysql.IntegrityError as e:
duplicateCounter=duplicateCounter+1
except Exception as ee:
otherErrors=otherErrors+1
我希望能够分别计算重复的项目条目异常以保持其他异常的计数。
我想确保我计算的异常是关于重复条目而不是别的。另一个问题是当前 duplicateCounter 最终为零,尽管我得到了至少 10 1062 个异常,这些异常被计入 otherErrors
解决方案
你还没有真正说明你的担忧是什么。您是否担心pymysql.IntegrityError
异常可能是由重复键错误以外的其他原因引起的?如果这是问题所在,您可以检查与异常关联的错误代码是否为 1062 (DUP_ENTRY),如下所示:
stmt = 'INSERT INTO table.items(item) VALUES("iteratorI");'
try:
mc.execute(stmt)
conn.commit()
except pymysql.IntegrityError as e:
if e.args[0] == 1062:
duplicateCounter += 1
except Exception as ee:
otherErrors += 1
如果您不想对 value 进行硬编码1062
,您可以...
from pymysql.constants.ER import DUP_ENTRY
...然后与e.args[0]
比较DUP_ENTRY
。但是您随后将用一种编码依赖项替换另一种编码依赖项。
推荐阅读
- android - 我应该在哪里使用单例,我应该在哪里为 1 活动应用程序使用视图模型?
- flutter - 颤振:使用带有页面的导航器时如何处理后退按钮按下
- java - Springboot 2.4.0-RC1 和 Spring Cloud Config (Illford) - java.lang.VerifyError:无法从最终类继承
- reactjs - Antd - 如何使用异步数据默认扩展表中的所有树项?
- java - 在Java中读取括号内的内容?
- sql - 如何让最后一行在 Oracle SQL 中显示聚合函数
- r - 按观察出现的时间过滤
- java - 测试覆盖仅调用另一个方法的方法的最佳方法是什么?
- python - 使用循环从更大的列表中保存新列表
- python - 使用用户输入来引用python中另一个文件中的函数