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'
我正在尝试使用 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'