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

Psycopg2 के साथ सर्वर साइड कर्सर का उपयोग कैसे करें

सर्वर साइड कर्सर के साथ काम करने के लिए Psycopg2 में एक अच्छा इंटरफ़ेस है। यह उपयोग करने के लिए एक संभावित टेम्पलेट है:

with psycopg2.connect(database_connection_string) as conn:
    with conn.cursor(name='name_of_cursor') as cursor:

        cursor.itersize = 20000

        query = "SELECT * FROM ..."
        cursor.execute(query)

        for row in cursor:
            # process row 

उपरोक्त कोड कनेक्शन बनाता है और स्वचालित रूप से क्वेरी परिणाम को सर्वर साइड कर्सर में रखता है। मान itersize सर्वर साइड कर्सर से एक बार में क्लाइंट द्वारा खींची जाने वाली पंक्तियों की संख्या सेट करता है। आपके द्वारा उपयोग किए जाने वाले मान को क्लाइंट पर नेटवर्क कॉल बनाम मेमोरी उपयोग की संख्या को संतुलित करना चाहिए। उदाहरण के लिए, यदि आपके परिणाम की संख्या तीन मिलियन है, तो एक itersize 2000 का मान (डिफ़ॉल्ट मान) के परिणामस्वरूप 1500 नेटवर्क कॉल होंगे। यदि 2000 पंक्तियों द्वारा खपत की गई मेमोरी हल्की है, तो उस संख्या को बढ़ा दें।

for row in cursor . का उपयोग करते समय बेशक आप एक समय में एक पंक्ति के साथ काम कर रहे हैं, लेकिन Psycopg2 itersize प्रीफ़ेच करेगा आपके लिए एक बार में पंक्तियाँ।

अगर आप fetchmany . का इस्तेमाल करना चाहते हैं किसी कारण से, आप ऐसा कुछ कर सकते हैं:

while True:
    rows = cursor.fetchmany(100)
    if len(rows) > 0:
        for row in rows:
            # process row
    else:
        break

fetchmany . का यह उपयोग जब तक प्रीफ़ेच किया गया बैच समाप्त नहीं हो जाता, तब तक अधिक पंक्तियों के लिए सर्वर पर नेटवर्क कॉल को ट्रिगर नहीं करेगा। (यह एक जटिल उदाहरण है जो उपरोक्त कोड पर कुछ भी नहीं प्रदान करता है, लेकिन दर्शाता है कि fetchmany का उपयोग कैसे करें आवश्यकता होनी चाहिए।)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. जेपीए के साथ पोस्टग्रेज JSONB डेटाटाइप का उपयोग कैसे करें?

  2. PostgreSQL उच्च उपलब्धता संस्थापन Patroni

  3. परिणाम उपलब्ध होने तक एकाधिक चयनों को आजमाने का तरीका?

  4. PG::ग्रुप बाय क्लॉज में त्रुटि

  5. क्या sql स्टेटमेंट पोस्टग्रेज में परमाणुता सुनिश्चित करता है