मैं इसी तरह की समस्या में भाग गया और कुछ घंटों के खून, पसीने और आँसुओं के बाद, उत्तर पाया कि बस एक पैरामीटर को जोड़ने की आवश्यकता है।
इसके बजाय
cursor = conn.cursor()
लिखें
cursor = conn.cursor(name="my_cursor_name")
या सरल अभी तक
cursor = conn.cursor("my_cursor_name")
विवरण http://initd.org/psycopg/docs/usage.html#server-side-cursors
पर पाए जाते हैंमैंने निर्देशों को थोड़ा भ्रमित करने वाला पाया, हालांकि मुझे "DECLARE my_cursor_name ...." और फिर "FETCH काउंट 2000 FROM my_cursor_name" शामिल करने के लिए अपने SQL को फिर से लिखना होगा, लेकिन यह पता चला है कि psycopg आपके लिए यह सब करता है यदि आप कर्सर बनाते समय केवल "नाम =कोई नहीं" डिफ़ॉल्ट पैरामीटर को अधिलेखित कर देते हैं तो हुड।
फ़ेचोन या फ़ेचमैनी का उपयोग करने का सुझाव समस्या का समाधान नहीं करता है, क्योंकि यदि आप नाम पैरामीटर को सेट किए बिना छोड़ देते हैं, तो psycopg डिफ़ॉल्ट रूप से संपूर्ण क्वेरी को रैम में लोड करने का प्रयास करेगा। केवल दूसरी चीज जो आपको करने की आवश्यकता हो सकती है (नाम पैरामीटर घोषित करने के अलावा) कर्सर को बदलना है। यदि आपके पास अभी भी बहुत कम स्मृति है तो डिफ़ॉल्ट 2000 से विशेषता को 1000 कहें।