Python MySQLdb错误1062异常无法正常工作

时间:2015-01-09 13:18:23

标签: python mysql duplicates

我正在尝试使用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选项。 我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

如果您在此处阅读示例: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会逃避您的值,否则您/其他人可能会想要做一些可以打开SQL注入的事情。

从查询正文

编辑'Duplicate_Code'