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

कैसे जांचें कि पाइथन MySQdb के साथ रिकॉर्ड मौजूद है या नहीं?

मेरा मानना ​​​​है कि सबसे कुशल "क्या यह मौजूद है" क्वेरी सिर्फ count करने के लिए है :

sqlq = "SELECT COUNT(1) FROM settings WHERE status = '1'"
xcnx.execute(sqlq)
if xcnx.fetchone()[0]:
    # exists

डेटाबेस को फ़ील्ड या पंक्तियों पर कोई भी गिनती संचालन करने के लिए कहने के बजाय, आप इसे केवल 1 या 0 वापस करने के लिए कह रहे हैं यदि परिणाम किसी भी मैच का उत्पादन करता है। यह बहुत अधिक कुशल है कि वास्तविक रिकॉर्ड लौटाना और ग्राहक पक्ष की राशि की गणना करना क्योंकि यह दोनों पक्षों पर क्रमांकन और अक्रमांकन और डेटा स्थानांतरण को बचाता है।

In [22]: c.execute("select count(1) from settings where status = 1")
Out[22]: 1L  # rows

In [23]: c.fetchone()[0]
Out[23]: 1L  # count found a match

In [24]: c.execute("select count(1) from settings where status = 2")
Out[24]: 1L  # rows

In [25]: c.fetchone()[0]
Out[25]: 0L  # count did not find a match

count(*) count(1) . के समान होने जा रहा है . आपके मामले में क्योंकि आप एक नई तालिका बना रहे हैं, यह 1 परिणाम दिखाने जा रहा है। यदि आपके पास 10,000 मैच हैं तो यह 100000 होगा। लेकिन आप अपने परीक्षण में केवल इस बात की परवाह करते हैं कि क्या यह 0 नहीं है, इसलिए आप एक बूल ट्रुथ टेस्ट कर सकते हैं।

अपडेट करें

वास्तव में, यह केवल पंक्ति गणना का उपयोग करने के लिए और भी तेज़ है, और परिणाम भी प्राप्त नहीं करता है:

In [15]: if c.execute("select (1) from settings where status = 1 limit 1"): 
            print True
True

In [16]: if c.execute("select (1) from settings where status = 10 limit 1"): 
            print True

In [17]: 

यह भी है कि कैसे django का ORM एक queryObject.exists() करता है .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. #1221 - UPDATE और ORDER BY का गलत उपयोग

  2. अद्यतन चलाते समय ... डेटाटाइम =अब (); क्या अपडेट की गई सभी पंक्तियों में एक ही दिनांक/समय होगा?

  3. उसी तालिका पर अद्यतन के बाद ट्रिगर में तालिका अद्यतन कर रहा है

  4. एक से अनेक संबंध बनाए रखने पर बाधा उल्लंघन

  5. Magento में ऑर्डर शुरू करने की संख्या कैसे बदलें