Закрыть и повторно подключиться к базе данных сеанса SQLAlchemy? - PullRequest
8 голосов
/ 05 апреля 2011

Предположим, нам нужно выполнить некоторые длительные вычисления после загрузки некоторых объектов из сеанса SQLAlchemy, мы хотим закрыть соединение с базой данных во время вычислений, а затем повторно подключиться к базе данных. Как это сделать в SQLAlchemy?

Или необходимо ли закрывать сеанс и каждый раз заново его создавать, а также объединять / перезагружать все связанные объекты? Но я обнаружил, что session.close() не закрывает соединение, даже session.connection().close() или закрывает соединение, привязанное к сеансу, также не закрывает его. Итак, как закрыть соединение после того, как я использовал сеанс и прежде чем выйти из приложения?

1 Ответ

13 голосов
/ 05 апреля 2011

Получил ответ от SQLAlchemy Google Group: используйте session.bind.dispose() после завершения текущей транзакции. Он удаляет весь пул соединений, поэтому все соединения с базой данных закрыты.

И я могу провести сеанс, например, зафиксировать или откатить сеанс вместо его закрытия. Когда мне понадобится использовать его позже, он автоматически установит необходимые соединения. Этот метод избавляет меня от воссоздания сессии и объединения объектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...