2016-04-27 3 views
0

Что такое хороший автоматический/общий способ проверить, нет ли каких-либо изменений данных, оставленных «обвисшими» и нераскрытых в SQLAlchemy при завершении любого запроса в Flask в любом месте приложения?Автоматическое обнаружение измененных изменений модели SQLAlchemy?

Другими словами, я хочу поймать любые изменения модели SQLAlchemy, которые просто «подметаются под ковер» по завершении запроса, потому что это говорит о ошибке в программировании, которая скрывается из-за того, что конкретный запрос (и все незафиксированные незапланированные изменения уничтожаются с помощью сеанса).

Flask-Sqlalchemy автоматически уничтожает сеансы при завершении запроса: http://flask.pocoo.org/docs/0.10/patterns/sqlalchemy/; и я предполагаю, что это включает в себя «истечение» всех незапланированных изменений: http://docs.sqlalchemy.org/en/latest/orm/session_api.html#sqlalchemy.orm.session.Session.expire

(Причина, по которой я думал об этой проблеме, заключается в том, что я временно включил автозапуск ON, и внезапно на конечной точке API я увидел, что некоторые изменения модели, которые я не знал из, и были непреднамеренное были покраснел, когда последующий запрос позже в том же API конечной точкой был запущен!)

ответ

1

Вы можете использовать SQLAlchemy session.deleted или session.dirty, чтобы проверить наличие не-промытых объектов session

+0

Выглядит хорошо. Как это можно добавить в качестве проверки к концу каждого запроса? – Soferio

+0

Вы можете использовать * teardown_request * для регистрации любой функции, которую вы хотите выполнить в конце каждого запроса. http://flask.pocoo.org/docs/0.10/api/#flask.Flask.teardown_request – aviator

Смежные вопросы