0
私はPostgreSQLデータベースでdjangoを使ってアプリケーションを開発しています。このアプリケーションは組織内で使用するように設計されているため、ユーザーが提供するSQL要求を実行する必要があります。私は不正なSQLとビューへの要求を行うときpsycopg2.ErrorがPythonのtry/exceptブロックで捕捉されていない
import psycopg2
...
def djangoView(request):
...
try:
result = DBModel.objects.raw(sqlQuery)
return getJSONResponse(result) #Serializes result of query to JSON
except psycopg2.Error:
pass #Handle error (no db requests are made)
しかし、私は500の内部で迎えています:不正なSQL要求の可能性に対処するために、データベースの呼び出しがtry/exceptブロック内にラップされていますサーバーエラー。スタックトレースは、500の原因が、psycopg2.ErrorのサブクラスであるProgrammingErrorであることを示しています。ただし、exceptステートメントは正しくキャッチしません。