Python MySQLdb:使用UNIQUE字段将重复条目插入表中

时间:2017-11-14 12:20:03

标签: python mysql duplicates mysql-python

我有一个MySQL数据库,其中包含一个名为navigator.language()的表,其结构如下:

commands

我正在尝试在其中插入行,但前提是+-----------+---------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+---------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | input | varchar(3000) | NO | | NULL | | | inputhash | varchar(66) | YES | UNI | NULL | | +-----------+---------------+------+-----+---------+----------------+ 字段尚不存在。我认为inputhash是这样做的方法,但我仍然收到警告。

例如,假设能够包含

INSERT IGNORE

然后使用以下Python代码插入行

+----+---------+------------------------------------------------------------------+
| id | input   | inputhash                                                        |
+----+---------+------------------------------------------------------------------+
|  1 | enable  | 234a86bf393cadeba1bcbc09a244a398ac10c23a51e7fd72d7c449ef0edaa9e9 |
+----+---------+------------------------------------------------------------------+

我收到了警告

import MySQLdb

db = MySQLdb.connect(host='xxx.xxx.xxx.xxx', user='xxxx', passwd='xxxx', db='dbase')
c = db.cursor()
c.execute('INSERT IGNORE INTO `commands` (`input`, `inputhash`) VALUES (%s, %s)', ('enable', '234a86bf393cadeba1bcbc09a244a398ac10c23a51e7fd72d7c449ef0edaa9e9',))

为什么会这样?我认为在Warning: Duplicate entry '234a86bf393cadeba1bcbc09a244a398ac10c23a51e7fd72d7c449ef0edaa9e9' for key 'inputhash' c.execute('INSERT IGNORE INTO `commands` (`input`, `inputhash`) VALUES (%s, %s)', ('enable','234a86bf393cadeba1bcbc09a244a398ac10c23a51e7fd72d7c449ef0edaa9e9',)) 字段的表上使用INSERT IGNORE的重点是抑制错误并忽略写入尝试?

解决此问题的正确方法是什么?我想我可以使用UNIQUE来抑制Python中的警告,但为什么警告会出现在第一位?

1 个答案:

答案 0 :(得分:0)

我希望它会对你有帮助!

import MySQLdb

db = MySQLdb.connect(host='xxx.xxx.xxx.xxx', user='xxxx', passwd='xxxx', 
db='dbase')
c = db.cursor()
c.execute('INSERT INTO `commands` (`input`, `inputhash`) VALUES ('enable', 
'234a86bf393cadeba1bcbc09a244a398ac10c23a51e7fd72d7c449ef0edaa9e9') ON 
DUPLICATE KEY UPDATE 'inputhash'='inputhash')