Versucht, Integritätsfehler mit SQLAlchemy abzufangen

Ich habe Probleme mit dem Versuch, einen Fehler abzufangen. Ich verwende Pyramid / SQLAlchemy und habe ein Anmeldeformular mit E-Mail als Primärschlüssel erstellt. Das Problem besteht darin, dass bei der Eingabe einer doppelten E-Mail ein IntegrityError ausgelöst wird. Daher versuche ich, diesen Fehler abzufangen und eine Nachricht zu übermitteln, aber egal, was ich tue, ich kann ihn nicht abfangen. Der Fehler wird weiterhin angezeigt.

try:
    new_user = Users(email, firstname, lastname, password)
    DBSession.add(new_user)
    return HTTPFound(location = request.route_url('new'))
except IntegrityError:
    message1 = "Yikes! Your email already exists in our system. Did you forget your password?"

Ich erhalte die gleiche Nachricht, als ich es versuchteexcept exc.SQLAlchemyError (obwohl ich bestimmte Fehler abfangen möchte und nicht alle abfangen will). Ich habe es auch versuchtexc.IntegrityError aber kein Glück (obwohl es in der API existiert).

Ist etwas mit meiner Python-Syntax nicht in Ordnung, oder muss ich in SQLAlchemy etwas Besonderes tun, um es zu erkennen?

Ich weiß nicht, wie ich dieses Problem lösen soll, aber ich habe ein paar Ideen, was das Problem verursachen könnte. Möglicherweise schlägt die try-Anweisung nicht fehl, ist aber erfolgreich, da SQLAlchemy die Ausnahme selbst auslöst und Pyramid die Ansicht generiertexcept IntegrityError: wird nie aktiviert. Oder, wahrscheinlicher, ich fange diesen Fehler völlig falsch ab.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage