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

यह लूप हर पांच सेकंड में एक अद्यतन वस्तु की गणना क्यों नहीं करता है?

क्योंकि Python DB API डिफ़ॉल्ट रूप से AUTOCOMMIT=OFF मोड में है, और (कम से कम MySQLdb के लिए) रिपीटेबल रीड आइसोलेशन स्तर पर है। इसका मतलब यह है कि पर्दे के पीछे आपके पास एक चालू डेटाबेस लेनदेन है (InnoDB ट्रांजेक्शनल इंजन है) जिसमें दी गई पंक्ति (या शायद तालिका भी, मुझे यकीन नहीं है) की पहली पहुंच शेष भाग के लिए इस संसाधन के "दृश्य" को ठीक करती है लेन-देन।

इस व्यवहार को रोकने के लिए, आपको वर्तमान लेनदेन को 'ताज़ा' करना होगा:

  from django.db import transaction


  @transaction.autocommit  
  def my_count():     
      while True:
          transaction.commit()
          print "Number of Things: %d" % Thing.objects.count()
          time.sleep(5)

-- ध्यान दें कि transaction.autocommit डेकोरेटर केवल लेनदेन प्रबंधन मोड में प्रवेश करने के लिए है (यह लेनदेन.enter_transaction_management/leave_transaction_managemen फ़ंक्शन का उपयोग करके मैन्युअल रूप से भी किया जा सकता है)।

एक और बात - जागरूक होने के लिए - Django का ऑटोोकॉमिट वही ऑटोोकॉमिट नहीं है जो आपके पास डेटाबेस में है - यह पूरी तरह से स्वतंत्र है। लेकिन यह इस प्रश्न के दायरे से बाहर है।

22/01/2012 को संपादित

यहाँ इसी तरह के प्रश्न का "जुड़वां उत्तर" है।




  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 फुलटेक्स्ट स्टॉपवर्ड सूचियों को कहाँ संपादित करें?

  2. MySQL में एचटीएमएल कोड स्टोर करने का सबसे अच्छा तरीका क्या है?

  3. MySQL में यूजर कैसे बनाएं

  4. आदेश द्वारा क्लॉज का उपयोग करके MySQL में सॉर्ट करना

  5. कार्यात्मक निर्भरता ढूँढना