Django:从IntegrityError中推断重复键异常
在使用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。
1 个回答
10
根据@karthikr的评论,我找到了错误的类型:
type(e.__cause__)
<class 'psycopg2.IntegrityError'>
稍微查了一下,发现了这个:
e.__cause__.pgcode
'23505'
我的理解是,只要我使用同一个数据库,就可以检查这个来确认它是一个重复键的错误。
& psycopg2
不会改变错误代码,