2010-02-01 12 views
26

कोई भी जानता है कि मैं MySQLldb का उपयोग कैसे कर सकता हूं, MySQL तालिका को कई पंक्तियों के साथ, पायथन में शब्दकोश ऑब्जेक्ट्स की सूची में कैसे बदल सकता हूं?पायथन: एक MySQL तालिका को एक शब्दकोश के रूप में आयात करने के लिए mysqldb का उपयोग करें?

मैं MySQL पंक्तियों का एक सेट, कॉलम 'एक', 'बी', और 'सी' के साथ, एक अजगर उद्देश्य यह है कि कि इस तरह दिखता है में बदल मतलब:

data = [ { 'a':'A', 'b':(2, 4), 'c':3.0 }, { 'a':'Q', 'b':(1, 4), 'c':5.0 }, { 'a':'T', 'b':(2, 8), 'c':6.1 } ] 

धन्यवाद :)

+0

मैं अगर मैं कर सकता हूं तो टैग 'डिक्शनरी' और/या 'कर्सर' यहां जोड़ देगा। – cregox

उत्तर

56

MySQLdb के लिए डिक्टर्स कर्सर के लिए एक अलग कर्सर क्लास है। आप कर्सर वर्ग आप MySQLdb.connect() करने के लिए उपयोग करना चाहते हैं पारित कर सकते हैं:

import MySQLdb.cursors 
MySQLdb.connect(host='...', cursorclass=MySQLdb.cursors.DictCursor) 
+2

बिल्कुल सही, धन्यवाद! किसी और के पढ़ने के लिए, आपको इसे शामिल करने के लिए अपनी पायथन स्क्रिप्ट के शीर्ष पर "MySQLdb.cursors आयात करें" भी जोड़ना होगा। – AP257

+2

आपको इस तथ्य को याद करना होगा कि मैंने वास्तव में कोड स्निपेट में MySQL.cursors आयात को शामिल किया था। –

+15

किसी और को पढ़ने के लिए, आपको स्निपेट के लिए काम करने के लिए 'MySQLdb.connect (host = '...', कर्सरक्लास = MySQLdb.cursors.DictCursor) 'कहीं भी' MySQLdb.cursors 'आयात करने के बाद भी जोड़ने की आवश्यकता है। (क्षमा करें, मैं विरोध नहीं कर सका!: डी) – cregox

16

आप और अधिक कर्सर उपयोग करने की आवश्यकता है और केवल एक होने की जरूरत है, तो आप MySQLdb.cursors.DictCursor कर सकते हैं:

import MySQLdb 
db = MySQLdb.connect(host='...', db='...', user='...t', passwd='...') 

list_cursor = db.cursor() 
dict_cursor = db.cursor(MySQLdb.cursors.DictCursor) 
+0

'आयात MySQLdb.cursors' जोड़ने की आवश्यकता है अन्यथा यह Python 3.4 में एक त्रुटि उठाता है –

0

यह एक प्राचीन पोस्ट है, और यह उत्तर ठीक नहीं है कि ओपी क्या देख रहा था, यह वही लाइनों के साथ बहुत अधिक है। इसके बजाय शब्दकोशों की सूची तैयार की है, यह सूचियों का एक शब्दकोश उत्पन्न करता है:

भी सोचा कि मैं शब्दकोश पैदा करने के लिए पूर्ण कोड प्रदान करेंगे:

import MySQLdb 
import MySQLdb.cursors 

dict_serv = MySQLdb.connect(host = 'localhost', user = 'root', passwd = 'mypassword', cursorclass = MySQLdb.cursors.DictCursor) 

with dict_serv as c: 
    c.execute("USE mydb") 
    c.execute("SELECT col1, col2 FROM mytable WHERE id = 'X123'") 

    # Save the dictionary to a separate variable 
    init_dict = c.fetchall() 

    # This line builds the column headers 
    sql_cols = [ col[0] for col in c.description ] 

    # This is a list comprehension within a dictionary comprehension 
    # which builds the full dictionary in a single line. 
    sql_dict = { k : [ d[k] for d in init_dict ] for k in sql_cols } 

कौन सा पैदावार:

{ 'col1': ['apple','banana'], 'col2':['red','yellow'] } 
संबंधित मुद्दे