Tratando de atrapar el error de integridad con SQLAlchemy

Estoy teniendo problemas al intentar detectar un error. Estoy usando Pyramid / SQLAlchemy e hice un formulario de registro con el correo electrónico como clave principal. El problema es que cuando se ingresa un correo electrónico duplicado, se genera un IntegrityError, por lo que estoy tratando de detectar ese error y enviar un mensaje, pero no importa lo que haga, no puedo detectarlo, el error sigue apareciendo.

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

Recibo el mismo mensaje cuando lo intenté.except exc.SQLAlchemyError (Aunque quiero atrapar errores específicos y no una captura general). Yo tambien lo intentéexc.IntegrityError Pero no hay suerte (aunque existe en la API).

¿Hay algo mal con mi sintaxis de Python, o hay algo que necesito hacer especial en SQLAlchemy para atraparlo?

No sé cómo resolver este problema, pero tengo algunas ideas de lo que podría estar causando el problema. Tal vez la declaración de prueba no esté fallando, pero está teniendo éxito porque SQLAlchemy está generando la excepción y Pyramid está generando la vista, por lo queexcept IntegrityError: nunca se activa O, más probablemente, estoy captando este error completamente equivocado.

Respuestas a la pregunta(5)

Su respuesta a la pregunta