Python MySQLdb 错误 1062 异常不工作

Python MySQLdb Error 1062 exception not working

我正在尝试使用 Python 2.7 脚本更新我的 MySQL 数据库中的数据集。我正在更新一个启用了唯一选项的字段。当我尝试添加重复条目时,Python 没有给我错误消息。

connection = MySQLdb.connect(
 host=DB_HOST,
 db=DB_DB,
 user='root', passwd='',
 charset="utf8"
)

cur = connection.cursor()

sql = "UPDATE type SET article_code='Duplicate_Code' where id=9"
try:
    cur.execute(sql)
    connection.commit()
    print "No ERROR"
except:
    print "ERROR"

connection.close()

输出:无错误

但是,数据集没有更新。如果我在 phpMyAdmin 界面中输入相同的 SQL 代码,我会收到以下消息:

#1062 - Duplicate entry 'Duplicate_Code' for key 'article_code' 

我希望我的 Python 脚本进入 except 选项。 我在这里做错了什么?

如果您通读此处的示例:http://mysql-python.sourceforge.net/MySQLdb.html#mysqldb

它指出您应该使用更类似于此的内容:

cur.execute("""UPDATE type SET article_code=%s where id=%s""", ('Duplicate_Code', 9))

因为您查询中的 9 将转换为 '9',它可能不作为键存在,因此您的查询什么都不做,这意味着总是成功。

另请注意,建议始终使用此模式,因为这样 MySQLdb 将转义您的值,否则 you/others 可能会想做一些让您敞开心扉的事情SQL 次注射。

从查询正文

中删除了 'Duplicate_Code'