Попытка отловить ошибку целостности с помощью 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:
никогда не активируется. Или, более вероятно, я уловил эту ошибку совершенно неправильно.