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

एसक्यूएल कीमिया रिलेशनशिप लोडर टेबल पर ताला छोड़ देता है?

आपको .drop_all() . से पहले एक नया लेन-देन शुरू करना होगा बुलाना; MySQL आपको इस लेन-देन में तालिका से पढ़ते हुए देखता है, और तालिका को गिराए जाने के विरुद्ध लॉक करता है:

session.commit()
Base.metadata.drop_all()

कोई लेन-देन करना परोक्ष रूप से एक नया लेन-देन शुरू करता है।

MySQL लेनदेन अलगाव के बारे में गारंटी देता है; आपका लेन-देन सुसंगत डेटा को पढ़ेगा और जब तक आप कोई नया लेन-देन शुरू नहीं करते, तब तक अन्य लेन-देन द्वारा किए गए परिवर्तन नहीं देखेंगे। एक ड्रॉप टेबल स्टेटमेंट हालांकि MySQL के लिए इन गारंटियों को रखना असंभव बना देता है इसलिए टेबल को लॉक किया जा रहा है।

वैकल्पिक रूप से, आप लेनदेन अलगाव स्तर को बदल सकते हैं, MySQL को बताकर कि आपको अलगाव की गारंटी की परवाह नहीं है। क्योंकि सत्र कनेक्शन पूल किए गए हैं, यह केवल सभी कनेक्शनों के लिए किया जा सकता है या बिल्कुल भी नहीं; आइसोलेशन_लेवल का उपयोग करें create_engine() :

engine = create_engine(
    'mysql://username:[email protected]/databasename',
    isolation_level='READ UNCOMMITTED')

देखें SET TRANSACTION दस्तावेज़ीकरण प्रत्येक अलगाव स्तर के बारे में विवरण के लिए।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL ट्रिगर्स के साथ CONCAT का उपयोग करना (त्रुटि पर,)

  2. कई-से-अनेक तालिकाओं से समूह पुनर्प्राप्त करना

  3. विंडोज 8 और MySQL? मेरे विकल्प क्या हैं?

  4. स्लीक 3.0 बल्क इंसर्ट या अपडेट (अप्सर्ट)

  5. लिक्विबेस के साथ डेटाबेस कैसे बनाएं