Próba wychwycenia błędu integralności za pomocą SQLAlchemy

Mam problemy z próbą złapania błędu. Używam Pyramid / SQLAlchemy i stworzyłem formularz rejestracyjny z e-mailem jako kluczem podstawowym. Problem polega na tym, że po wprowadzeniu duplikatu wiadomości pojawia się błąd IntegrityError, więc próbuję złapać ten błąd i dostarczyć wiadomość, ale bez względu na to, co robię, nie mogę go złapać, błąd pojawia się.

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?"

Otrzymuję ten sam komunikat, gdy próbowałemexcept exc.SQLAlchemyError (chociaż chcę uchwycić określone błędy, a nie złapać koc). Próbowałem teżexc.IntegrityError ale nie ma szczęścia (chociaż istnieje w API).

Czy jest coś nie tak z moją składnią Pythona, czy jest coś, co muszę zrobić w SQLAlchemy, aby ją złapać?

Nie wiem, jak rozwiązać ten problem, ale mam kilka pomysłów na to, co może być przyczyną problemu. Może instrukcja try nie zawodzi, ale się powiedzie, ponieważ SQLAlchemy podnosi wyjątek, a Pyramid generuje widok, więcexcept IntegrityError: nigdy się nie aktywuje. Lub, bardziej prawdopodobne, łapię ten błąd całkowicie źle.

questionAnswers(5)

yourAnswerToTheQuestion