Не предоставляя точной причины, по которой вам это нужно, позвольте мне предложить практическую причину.
sessions
существует для координации изменений в базе данных до их фактической фиксации и окончательного сохранения.Когда вы выполняете session.commit()
, выполняется полный набор изменений.Он либо потерпит неудачу полностью, либо преуспеет полностью.Если вы не очищаете session
после каждого request
, то оно будет сохраняться, и может произойти следующее:
1) Вы выполняете неверный запрос, который изменяет сеанс с элементами, вызывающими разрыв, и оставляетесессия открыта.Вы выполняете новый запрос (в том же сеансе), который является действительным, и пытаетесь зафиксировать.Сбой из-за ошибки в первом запросе.Ваше приложение не отделено и разумно разделено на небольшие модульные компоненты.Его сложно отладить, так как вы ожидаете ошибку во втором запросе.
2) Вы выполняете правильный запрос и вносите некоторые изменения.Возможно, выполняется сброс для доступа к идентификаторам перед фиксацией.Однако сеанс не зафиксирован.В какой-то неопределенный момент времени в будущем будет сделан другой запрос на существующий (открытый) сеанс.Сейчас она устарела, поскольку за это время произошло еще много изменений.Новый коммит может завершиться неудачно и снова будет трудно его отладить.
.. возможно, много других причин.