Ich benutze Django + MySQL. Manchmal füge ich doppelte Daten in meine Datenbank ein, was dazu führt, dass django eine IntegrityErrror
auslöst.Django - Unterscheiden Sie verschiedene Arten von IntegrityError
Das Problem ist, verwenden Django/Python den gleichen Fehler für mehrere der verschiedenen MySQL errors. Die einzige Möglichkeit, zwischen ihnen zu unterscheiden, besteht darin, den Fehlercode zu betrachten. Zum Beispiel
try:
# code that raises integrity error
except IntegrityError
if e.args[0] == 1062:
raise CustomCreatedDuplicateEntryError
else:
raise e
Meine Frage ist: Ist das sicher zu tun? Wenn ja, warum wird dies nicht auf einer niedrigeren Ebene umgesetzt? Es scheint, als könnte ich nicht der Einzige sein, der eine feinere Kontrolle über IntegrityError will.
Danke!
EDIT
-Code diesen Fehler
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()
Können Sie den Code hochladen, der den Integritätsfehler verursacht? –
@ScottWoodall, hinzugefügt :) Ich bin nicht sicher, ob dies hilfreich sein wird, es ist ein sehr häufiger Fehler in Django (viele Fragen zu SO fragen, warum es ausgelöst wird) – djs22
Ist nicht der Grund, nur dass diese Fehlernummern sind Datenbank-Engine-abhängig? –