Попытка отловить ошибку целостности с помощью SQLAlchemy

У меня проблемы с попыткой поймать ошибку. Я использую Pyramid / SQLAlchemy и создал форму регистрации с электронной почтой в качестве первичного ключа. Проблема заключается в том, что при вводе дубликата электронной почты возникает ошибка IntegrityError, поэтому я пытаюсь перехватить эту ошибку и предоставить сообщение, но независимо от того, что я делаю, я не могу ее перехватить, ошибка продолжает появляться.

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

Я получаю то же сообщение, когда я пыталсяexcept exc.SQLAlchemyError (хотя я хочу поймать конкретные ошибки, а не одеяло поймать все). Я тоже пробовалexc.IntegrityError но не повезло (хотя оно существует в API).

Что-то не так с моим синтаксисом Python, или мне нужно сделать что-то особенное в SQLAlchemy, чтобы его поймать?

Я не знаю, как решить эту проблему, но у меня есть несколько идей о том, что может быть причиной проблемы. Возможно, оператор try не завершается неудачно, но успешно, потому что SQLAlchemy вызывает само исключение, а Pyramid генерирует представление, поэтомуexcept IntegrityError: никогда не активируется. Или, более вероятно, я уловил эту ошибку совершенно неправильно.

Ответы на вопрос(5)

Ваш ответ на вопрос