2012-02-10 13 views
7
का उपयोग करते समय
dict_cur = conn.cursor(cursor_factory=psycopg2.extras.RealDictCursor) 
dict_cur.execute("SELECT column1, column2, column3 FROM mytable") 
result = dict_cur.fetchall() 
print result[0] 
>>> {'column2':10, 'column1':12, 'column3':42} 

मैं स्तंभ आदेश कैसे की रक्षा कर सकता है स्तंभ क्रम बनाए रखने के लिए? जब सूची वापस आती है तो यह सामान्य कर्सर के साथ अच्छी तरह से काम करता है, लेकिन मुझे शब्दकोश कुंजी तक पहुंच की आवश्यकता है और इसलिए RealDictCursor का उपयोग करने की आवश्यकता है।कैसे निष्पादित एसक्यूएल को पार्स पहले बिना psycopg2.extras.RealDictCursor

संपादित करें: ठीक है, मैं वास्तव में नहीं कर सकता। विवरण कर्सर ऑब्जेक्ट की विशेषता कॉलम नाम प्राप्त करने के लिए उपयोग की जानी चाहिए।

उत्तर

1

मैं इस "extras" पैकेज की जरूरत नहीं है, लेकिन आम तौर पर एक कर्सर एक संपत्ति description जो एक टपल क्रम में सभी स्तंभों युक्त फ़ील्ड प्रकार आदि

कोशिश की तरह कुछ अतिरिक्त जानकारी के साथ-साथ है कहा जाता है होना चाहिए एक पाइथन खोल में "print dict_cur.description" और देखें कि आपको क्या मिलता है।

संपादित करें: कभी भी ध्यान न दें। मैंने आपका "संपादन" नहीं पढ़ा ...

1

आप psycopg2.extras.NamedTupleCursor का उपयोग कर सकते हैं और फिर का उपयोग OrderedDict पर परिवर्तित करने के लिए कर सकते हैं।

नोट: इस कार्यक्षमता को "बॉक्स से बाहर" प्राप्त करने के क्रम में हमें पाइथन संस्करण> = 2.7 होना चाहिए।

संबंधित मुद्दे