django.db.utils中的IntegrityError#1062 - 密钥2的重复条目

时间:2013-08-06 12:48:53

标签: python mysql django

使用Py2.6,FreeTDS从MSSQL数据库导入数据并放入MySQL。 我有一张表,我认为需要更改一个唯一的密钥。它不应该是唯一的,也不是id键。

board_pat | CREATE TABLE `board_pat` (
  `id` int(11) NOT NULL auto_increment,
  `first_name` varchar(100) NOT NULL,
  `middle_name` varchar(100) default NULL,
  `last_name` varchar(100) NOT NULL,
  `mrn` varchar(9) NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `mrn` (`mrn`)
) ENGINE=MyISAM AUTO_INCREMENT=6896 DEFAULT CHARSET=latin1 |

没有其他表引用此密钥,我相信它会导致此错误:

django.db.utils.IntegrityError: (1062, "Duplicate entry '001918271' for key 2")

这会停止通过重复的记录导入记录。奇怪的是,可以手动输入导致错误的记录而没有错误。并且,在此字段中输入其他记录并重复,并且不会出现任何问题。快把我逼疯了。

如果我删除了唯一属性,这会对django产生什么影响?如果更改表是个坏主意,我如何让python跳过记录并继续完成导入?目前它在遇到错误时停止。 谢谢 哈利

1 个答案:

答案 0 :(得分:1)

使用错误句柄机制尝试并插入数据: -

from django.db.utils import DatabaseError,IntegrityError

然后执行类似的操作以防止python脚本停止: -

 try:
  #write code to execute query here
except IntegrityError:
   #write code to handle exception here(example creating a log)