【问题标题】:Django : Deduce duplicate key exception from IntegrityError [duplicate]Django:从 IntegrityError 中推断出重复键异常 [重复]
【发布时间】:2014-08-18 16:36:09
【问题描述】:

使用 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。

【问题讨论】:

标签: python django django-models psycopg2


【解决方案1】:

根据@karthikr 的评论,我发现了错误类型:

type(e.__cause__)
<class 'psycopg2.IntegrityError'>

四处逛逛发现了这一点:

e.__cause__.pgcode
'23505'

我的理解是,只要我坚持使用同一个数据库,我就可以检查它以验证它是否是重复键错误。

&psycopg2不会改变错误码,

【讨论】:

猜你喜欢
  • 2018-03-18
  • 2012-07-23
  • 1970-01-01
  • 1970-01-01
  • 2013-01-06
  • 1970-01-01
  • 2023-03-15
  • 2011-11-11
  • 2012-06-20
相关资源
最近更新 更多