Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

प्रति कनेक्शन एकाधिक लेनदेन के साथ MySQLdb

मुझे लगता है कि यहां एक लेन-देन के बारे में गलतफहमी है।

आपका उदाहरण एक कनेक्शन खोलता है, फिर एक निष्पादित करता है उस पर लेनदेन। आप उस लेन-देन में एकाधिक SQL कथन निष्पादित करते हैं, लेकिन आप इसे पूरी तरह से बंद करने के बाद बंद कर देते हैं। बेशक यह बहुत अच्छा है।

अनेक लेन-देन निष्पादित करना (केवल SQL कथन के विपरीत), ऐसा दिखता है:

conn = MySQLdb.connect(host="1.2.3.4", port=1234, user="root", passwd="x", db="test")

for j in range(10):
    try:
        for i in range(10):
            cur = conn.cursor()
            query = "DELETE FROM SomeTable WHERE ID = %d" % i
            cur.execute(query)
            cur.close()
        conn.commit()
    except Exception:
        conn.rollback()

conn.close()

उपरोक्त कोड 10 लेनदेन करता है, प्रत्येक में 10 अलग-अलग डिलीट स्टेटमेंट होते हैं।

और हाँ, आप बिना किसी समस्या के उसके लिए खुले कनेक्शन का पुन:उपयोग करने में सक्षम होना चाहिए, जब तक कि आप उस कनेक्शन को थ्रेड्स के बीच साझा नहीं करते।

उदाहरण के लिए, SQLAlchemy आवेदन के लिए आवश्यकतानुसार खुले कनेक्शन सौंपकर, उन्हें पूल करके कनेक्शन का पुन:उपयोग करता है। एप्लिकेशन के बंद होने तक बंद किए बिना, एप्लिकेशन के पूरे जीवनकाल में इन कनेक्शनों पर नए लेनदेन और नए विवरण निष्पादित किए जाते हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सरणी में डेटाबेस परिणाम जोड़ना

  2. MySQL से डाला गया डेटा तुरंत नहीं देख सकता

  3. MySQL - नया कॉलम जोड़ने का प्रयास करते समय डुप्लिकेट प्रविष्टि त्रुटि

  4. PDO/MySQL rowCount अपेक्षित रूप से वापस नहीं आ रहा है

  5. MySQL के साथ कभी भी अधिकांश उपयोगकर्ताओं की ऑनलाइन गणना करें