エラーをキャッチしようとすると問題が発生します。私は 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 で何か特別なことをする必要がありますか?
この問題を解決する方法はわかりませんが、問題の原因についていくつかのアイデアがあります。SQLAlchemy 自体が例外を発生させ、Pyramid がビューを生成しているため、try ステートメントは失敗していませんが成功している可能性がありますexcept IntegrityError:
。または、おそらく、このエラーを完全に間違って認識しています。