Tentando pegar o erro de integridade com o SQLAlchemy
Estou com problemas ao tentar encontrar um erro. Estou usando o Pyramid / SQLAlchemy e criei um formulário de inscrição com e-mail como chave primária. O problema é que quando um e-mail duplicado é inserido, ele gera um IntegrityError, por isso estou tentando capturar esse erro e fornecer uma mensagem, mas não importa o que eu faça, não consigo pegá-lo, o erro continua aparecendo.
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?"
Eu recebo a mesma mensagem quando tenteiexcept exc.SQLAlchemyError
(embora eu quero pegar erros específicos e não um cobertor pegar todos). Eu também tenteiexc.IntegrityError
mas sem sorte (embora exista na API).
Há algo de errado com a minha sintaxe Python, ou há algo que eu preciso fazer especial em SQLAlchemy para pegá-lo?
Eu não sei como resolver esse problema, mas tenho algumas idéias do que poderia estar causando o problema. Talvez a instrução try não esteja falhando, mas obtendo sucesso porque o SQLAlchemy está levantando a própria exceção e a Pyramid está gerando a visualização para queexcept IntegrityError:
nunca é ativado. Ou, mais provavelmente, estou pegando esse erro completamente errado.