सत्र ईवेंट प्रत्येक नए लेनदेन पर एक मनमाना SQL कथन निष्पादित करने के लिए। आप कनेक्शन स्तर पर भी ईवेंट का उपयोग कर सकते हैं, यह आपके उपयोग के मामले पर निर्भर करता है।
यहां बताया गया है कि मैं इसे सत्र स्तर पर कैसे करूंगा:
Session = sessionmaker()
@event.listens_for(Session, 'before_flush')
def set_max_heap_table_size(session, transaction, connection):
session.execute('SET max_heap_table_size = 1024 * 1024 * 64')
यदि आप सुनिश्चित नहीं हैं कि आपके लिए कौन सा तरीका काम करता है, तो बस उन्हें आज़माएं, कुछ परीक्षण मामले लिखें और पता करें कि क्या यह आपके लिए काम करता है।
एक चेतावनी (अनिश्चित) हो सकती है:चूंकि कनेक्शन गिराया नहीं गया है लेकिन पूल में वापस आ गया है, सेटिंग जारी रह सकती है। इस मामले में आप डिफ़ॉल्ट को पुनर्स्थापित करने के लिए कुछ संलग्न करना चाह सकते हैं, उदा। after_flush
. पर प्रतिस्पर्धा। मैं इस पर पूरी तरह से निश्चित नहीं हूं, आप प्रयोग करना चाहेंगे। यदि यह अनावश्यक है, तो आप after_begin
. का भी उपयोग कर सकते हैं घटना, लेकिन कोई वास्तविक before_close
नहीं है ईवेंट जो इसे लपेटता है, इसलिए यह समस्याएँ पैदा कर सकता है।