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

पायथन के माध्यम से बैचों में MySQL से डेटा प्राप्त करना

पहला बिंदु:एक अजगर db-api.cursor एक पुनरावर्तक है, इसलिए जब तक आपको वास्तव में जरूरत . न हो मेमोरी में एक बार में एक पूरे बैच को लोड करने के लिए, आप बस इस सुविधा का उपयोग करके शुरू कर सकते हैं, अर्थात इसके बजाय:

cursor.execute("SELECT * FROM mytable")
rows = cursor.fetchall()
for row in rows:
   do_something_with(row)

आप बस कर सकते हैं:

कर्सर में पंक्ति के लिए
cursor.execute("SELECT * FROM mytable")
for row in cursor:
   do_something_with(row)

फिर यदि आपके डीबी कनेक्टर का कार्यान्वयन अभी भी इस सुविधा का उचित उपयोग नहीं करता है, तो यह मिश्रण में LIMIT और OFFSET जोड़ने का समय होगा:

# py2 / py3 compat
try:
    # xrange is defined in py2 only
    xrange
except NameError:
    # py3 range is actually p2 xrange
    xrange = range

cursor.execute("SELECT count(*) FROM mytable")
count = cursor.fetchone()[0]
batch_size = 42 # whatever

for offset in xrange(0, count, batch_size):
    cursor.execute(
        "SELECT * FROM mytable LIMIT %s OFFSET %s", 
        (batch_size, offset))
   for row in cursor:
       do_something_with(row)


  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. कैसे Laravel 5.1 में डेटाबेस में टेबल सूची लाने के लिए?

  3. MySQL ड्रॉप अद्वितीय बाधा

  4. Laravel 4 में डेटाबेस परिणाम खोजना और फ़िल्टर करना / परिष्कृत करना

  5. ऑल्टर टेबल का उपयोग किए बिना लेट लॉन्ग के साथ MySQL स्थानिक कॉलम - प्वाइंट डेटा टाइप बनाएं