2013-08-06 40 views
0

使用Py2.6,FreeTDS从MSSQL数据库导入数据并放入MySQL。 我有一张表,其中包含一个我认为需要更改的唯一键。它不应该是唯一的,也不是身份证密钥。django.db.utils中的IntegrityError#1062 - 重复键2的条目

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

尝试和插入数据: -

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) 
相关问题