私はdjango + MySQLを使用しています。時々、重複したデータをデータベースに挿入すると、django でIntegrityErrror
.
問題は、django/python がこの同じエラーをいくつかの異なるMySQL エラーに使用することです。それらを区別する唯一の方法は、エラー コードを確認することです。例えば、
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()