Я использую Flask 1.0 , Flask-SqlAlchemy 2 и Angular 7 .
Когда SqlAlchemy выдает ошибку, я хочупоказать специальное сообщение об ошибке во внешнем интерфейсе.
В официальной документации Flask есть раздел о том, как обрабатывать ошибки, а также аналогичный вопрос здесь, на SO,это связано с Flask-Restless .И все же я не могу соединить точки.
Когда SqlAlchemy выдает ошибку, это выглядит примерно так:
DETAIL: Key (id)=(123) is not present in table "foo".
Я возвращаю ошибку в маршрут:
try:
db.session.commit()
except Exception as error:
db.session.flush()
db.session.rollback()
return error
В маршруте я проверяю, есть ли ошибка:
if status == True:
return jsonify( { "success": True } ), 201
else:
return error_response(500, str(status))
И мой класс error_response выглядит так:
def error_response(status_code, message=None):
payload = {"error": HTTP_STATUS_CODES.get(status_code, "Unknown error")}
if message:
payload["message"] = message
response = jsonify(payload)
response.status_code = status_code
return response
Но ответjson просто содержит общее сообщение об ошибке:
"message": "Http failure response for http://127.0.0.1:5000/database/add_foo: 0 Unknown Error"