2011-04-05 10 views
8

मान लीजिए कि हमें SQLAlchemy सत्र से कुछ ऑब्जेक्ट्स लोड करने के बाद कुछ लंबे समय तक कंप्यूटिंग करने की आवश्यकता है, हम कंप्यूटिंग के दौरान डेटाबेस कनेक्शन बंद करना चाहते हैं, फिर डेटाबेस से पुन: कनेक्ट करें। SQLAlchemy में यह कैसे करें?SQLAlchemy सत्र के डेटाबेस कनेक्शन को बंद और पुनः कनेक्ट करें?

या, क्या सत्र को बंद करना और हर बार फिर से बनाना आवश्यक है, और सभी संबंधित वस्तुओं को विलय/पुनः लोड करना आवश्यक है? लेकिन मुझे session.close() कनेक्शन बंद नहीं हुआ है, यहां तक ​​कि session.connection().close() या सत्र से जुड़े कनेक्शन को बंद करने से यह बंद नहीं होता है। तो मैंने सत्र बंद करने के बाद और एप्लिकेशन छोड़ने से पहले कनेक्शन को बंद करने के लिए कैसे?

+0

अगर आप इसे मानते हैं तो कृपया उत्तर के रूप में प्रश्न को चिह्नित करें। –

उत्तर

13

एसक्यूएलकेमी Google समूह का उत्तर प्राप्त हुआ: चल रहे लेनदेन को समाप्त करने के बाद session.bind.dispose() का उपयोग करें। यह पूरे कनेक्शन पूल का निपटारा करता है, इसलिए सभी डेटाबेस कनेक्शन बंद हैं।

और मैं सत्र आयोजित कर सकता हूं, उदा। इसे बंद करने के बजाय सत्र को प्रतिबद्ध या रोलबैक करें। जब मुझे इसे बाद में उपयोग करने की आवश्यकता होती है, तो यह स्वचालित रूप से आवश्यक कनेक्शन बनायेगा। यह विधि मुझे सत्र को पुनर्जीवित करने और वस्तुओं को विलय करने से बचाती है।

+1

हाय गैरी, मेरे मामले में, यह अभी भी MySQL कनेक्शन बंद नहीं कर रहा है (मैं 'नींद' मोड में, 'showprocesslist; ') का उपयोग करके एक नई प्रक्रिया को जोड़ रहा हूं (भले ही मैं' session.bind.dispose () ')। कोई सुझाव? – Sangram

संबंधित मुद्दे