2011-04-05 2 views
8

Supposons que nous ayons besoin de faire du calcul de longue durée après le chargement de certains objets de la session SQLAlchemy, nous souhaitons fermer la connexion à la base de données pendant le calcul, puis nous reconnecter à la base de données. Comment le faire dans SQLAlchemy?Fermer et reconnecter la connexion à la base de données de la session SQLAlchemy?

Ou est-il nécessaire de fermer la session et de la recréer à chaque fois, et de fusionner/recharger tous les objets associés? Mais j'ai trouvé session.close() ne ferme pas la connexion, même session.connection().close() ou fermer la connexion liée à la session ne le ferme pas non plus. Alors, comment fermer la connexion, après avoir utilisé une session et avant de quitter l'application?

+0

veuillez marquer la question comme si vous le pensiez. –

Répondre

13

Vous avez obtenu la réponse du groupe Google SQLAlchemy: utilisez session.bind.dispose() après avoir terminé la transaction en cours. Il dispose de l'ensemble du pool de connexions, de sorte que toutes les connexions à la base de données sont fermées.

Et je peux maintenir la session, par ex. valider ou annuler la session au lieu de la fermer. Lorsque je devrai l'utiliser plus tard, les connexions nécessaires seront automatiquement établies. Cette méthode m'évite de recréer la session et de fusionner des objets.

+1

Salut Gary, dans mon cas, il ne ferme toujours pas les connexions MySQL (je peux voir un nouveau processus ajouté (en utilisant 'showprocesslist;'), en mode veille, même si j'utilise 'session.bind.dispose () '). Aucune suggestion? – Sangram

Questions connexes