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.

questionAnswers(5)

yourAnswerToTheQuestion