Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何避免MySQL数据库中的重复条目而不引发错误_Python_Mysql_Mysql Python - Fatal编程技术网

Python 如何避免MySQL数据库中的重复条目而不引发错误

Python 如何避免MySQL数据库中的重复条目而不引发错误,python,mysql,mysql-python,Python,Mysql,Mysql Python,我正在使用pythonmysql(MySQLdb)库向数据库中插入值。我希望避免将重复的条目插入数据库,因此我在MySQL的该列中添加了unique约束。我正在检查标题列中是否存在重复项。在我的Python脚本中,我使用以下语句: cursor.execute ("""INSERT INTO `database` (title, introduction) VALUES (%s, %s)""", (title, pure_introduction)) 现在,将重复条目添加到数据库时,将产生错误

我正在使用pythonmysql(MySQLdb)库向数据库中插入值。我希望避免将重复的条目插入数据库,因此我在MySQL的该列中添加了
unique
约束。我正在检查
标题
列中是否存在重复项。在我的Python脚本中,我使用以下语句:

cursor.execute ("""INSERT INTO `database` (title, introduction) VALUES (%s, %s)""", (title, pure_introduction))

现在,将重复条目添加到数据库时,将产生错误。我不希望出现错误消息;我只是希望,如果发现重复条目,那么它不应该将该值输入数据库。如何做到这一点?

除了@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?
您可以利用语法来抑制这种类型的错误

如果使用IGNORE关键字,则会忽略执行INSERT语句时发生的错误。例如,在不忽略的情况下,复制表中现有唯一索引或主键值的行将导致重复键错误,语句将中止。使用IGNORE时,将丢弃该行,并且不会发生错误。忽略的错误可能会生成警告,但重复的键错误不会

在您的情况下,查询将变成:

INSERT IGNORE INTO `database` (title, introduction) VALUES (%s, %s)

看看哇!有时候,小小的改变也能带来奇迹!!!希望我能将其标记为一个可接受的答案:)作为一个附带问题,我在哪里可以找到游标的文档?我搜索了一下,找到了,但似乎还不够。@sєєm sєm例如,(特别是MySQLdb)。+这肯定是类似问题的一个很好的替代方案!不幸的是,文档没有显示错误时返回的内容@alecxe@s至于
MySQLdb
——是的,真的很糟糕。请注意,这可能会忽略可能发生的所有其他错误。(文件中的引文确实如此,但值得重复!)