hnv*_*asa 4 python mysql mysql-python
我正在使用Python-MySQL(MySQLdb)库将值插入数据库.我想避免重复的条目插入到数据库中,所以我unique在MySQL中将该约束添加到该列.我正在检查title列中的重复项.在我的Python脚本中,我使用以下语句:
cursor.execute ("""INSERT INTO `database` (title, introduction) VALUES (%s, %s)""", (title, pure_introduction))
Run Code Online (Sandbox Code Playgroud)
现在,当向数据库添加重复条目时,它将产生错误.我不希望出现错误消息; 我只是想要,如果找到重复的条目,那么它应该不会将该值输入数据库.我该怎么做呢?
您可以使用INSERT IGNORE语法来抑制此类错误.
如果使用IGNORE关键字,则会忽略执行INSERT语句时发生的错误.例如,如果没有IGNORE,则复制表中现有UNIQUE索引或PRIMARY KEY值的行会导致重复键错误,并且语句将中止.使用IGNORE,该行将被丢弃并且不会发生错误.虽然重复键错误没有,但忽略错误可能会生成警告.
在您的情况下,查询将变为:
INSERT IGNORE INTO `database` (title, introduction) VALUES (%s, %s)
Run Code Online (Sandbox Code Playgroud)
除了@Andy建议的内容(它应该真的作为答案发布),你还可以在Python中捕获异常并使其静音:
try:
cursor.execute ("""INSERT INTO `database` (title, introduction) VALUES (%s, %s)""", (title, pure_introduction))
except MySQLdb.IntegrityError:
pass # or may be at least log?
Run Code Online (Sandbox Code Playgroud)