我正在使用django + MySQL。有時候,我會在數據庫中插入重複數據,這會導致django引發IntegrityErrror
。Django - 區分不同類型的IntegrityError
問題是,django/python對幾個不同的MySQL errors使用相同的錯誤。區分它們的唯一方法是查看錯誤代碼。例如,
try:
# code that raises integrity error
except IntegrityError
if e.args[0] == 1062:
raise CustomCreatedDuplicateEntryError
else:
raise e
我的問題是:這是安全的嗎?如果是這樣,爲什麼不在較低的水平上實施?似乎我不能成爲唯一一個希望對IntegrityError進行更精細控制的人。
謝謝!
編輯
代碼,以提高該錯誤
class Foo(django.db.models.Model):
guid = models.CharField(max_length=32, db_index=True, unique=True)
Foo(guid=a).save()
# this raises an IntegrityError with code 1062!
Foo(guid=a).save()
您可以發佈引發完整性錯誤的代碼嗎? –
@ScottWoodall,補充:)我不確定這是否會有所幫助,但這是django中的一個非常常見的錯誤(有關SO的問題很多,爲什麼它會被提出) – djs22
是不是原因只是這些錯誤號是數據庫引擎依賴? –