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