使用Django 1.6时,如果出现重复的密钥,我会收到异常
IntegrityError: duplicate key value violates unique constraint "..."
Django也对其他类型的数据库违规使用IntegrityError
例外。我想将duplicate key
作为一个特例来处理,即
try:
model = MyModel(name='xyz')
model.save()
except MyModal.IntegrityError:
if exception_due_to_duplicate_key:
do_something()
except:
do_something_else()
是否存在唯一的错误代码,或者我是否必须解析错误消息。我试图避免get
调用数据库以确定违规是由于重复密钥造成的。
更新:我应该提一下psycopg2
抛出异常,因为我正在使用Django和PostgreSQL。
答案 0 :(得分:6)
根据@karthikr的评论,我找到了错误类型:
type(e.__cause__)
<class 'psycopg2.IntegrityError'>
有点戳了一下这个:
e.__cause__.pgcode
'23505'
我的理解是,只要我坚持使用相同的数据库,我就可以检查这一点,以确认它是重复的密钥错误。
<击>&安培; psycopg2
不会更改错误代码,