2011-04-05 35 views
8

Supongamos que tenemos que hacer algo de computación a largo plazo después de cargar algunos objetos desde la sesión de SQLAlchemy, queremos cerrar la conexión de la base de datos durante el cómputo, luego reconectar a la base de datos. ¿Cómo hacerlo en SQLAlchemy?¿Cerrar y volver a conectar la conexión de la base de datos de la sesión de SQLAlchemy?

O, ¿es necesario cerrar la sesión y volver a crear una cada vez, y fusionar/volver a cargar todos los objetos relacionados? Pero encontré session.close() no cerrar la conexión, incluso session.connection().close() o cerrar la conexión vinculada a la sesión no se cierra tampoco. Entonces, ¿cómo cerrar la conexión, después de usar una sesión y antes de salir de la aplicación?

+0

marque la pregunta como respondida si lo considera así. –

Respuesta

13

Obtuve la respuesta del Grupo de Google SQLAlchemy: use session.bind.dispose() después de finalizar la transacción en curso. Descarta todo el conjunto de conexiones, por lo que todas las conexiones a la base de datos están cerradas.

Y puedo mantener la sesión, p. comprometer o revertir la sesión en lugar de cerrarla. Cuando necesite usarlo más tarde, automáticamente hará las conexiones necesarias. Este método me evita recrear la sesión y fusionar objetos.

+1

Hola Gary, en mi caso, todavía no está cerrando las conexiones de MySQL (puedo ver un nuevo proceso que se agrega (usando 'showprocesslist;'), en el modo 'sleep', incluso si uso' session.bind.dispose () '). ¿Alguna sugerencia? – Sangram

Cuestiones relacionadas