如何捕获MySql插入异常:“1062(23000):重复条目”,同时捕获其他异常Python 3?

2024-10-01 00:33:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试捕获并计算重复条目异常:

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中


Tags: 项目key代码foras条目itemunique
1条回答
网友
1楼 · 发布于 2024-10-01 00:33:17

你还没有真正说明你关心的是什么。您是否担心pymysql.IntegrityError异常可能是由重复密钥错误以外的其他原因引起的?如果这是问题所在,您可以检查与异常相关联的错误代码是否为1062(DUP_条目),如下所示:

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

如果不想硬编码值1062,可以

from pymysql.constants.ER import DUP_ENTRY

。。。然后比较e.args[0]DUP_ENTRY。但是您将用一个编码依赖项替换另一个编码依赖项

相关问题 更多 >