वहाँ MySQL करने के लिए adbapi क्वेरी से परिणाम शब्दकोश लौटने के लिए कोई तरीका है?मुड़ MySQL adbapi वापसी शब्दकोश
[name: 'Bob', phone_number: '9123 4567']
डिफ़ॉल्ट रिटर्न टुपल।
['Bob', '9123 4567']
सरल अजगर & MySQL के लिए हम MySQLdb.cursors.DictCursor उपयोग कर सकते हैं। लेकिन यह कैसे मुड़ adbapi
युपीडी के साथ उपयोग करने के लिए: मैं इसे हल लेकिन मुझे लगता है बेहतर तरीका होना चाहिए। मेरे समाधान: बस ओवरराइड * _runInteraction * adbapi.ConnectionPool वर्ग की विधि।
class MyAdbapiConnectionPool(adbapi.ConnectionPool):
def _runInteraction(self, interaction, *args, **kw):
conn = self.connectionFactory(self)
trans = self.transactionFactory(self, conn)
try:
result = interaction(trans, *args, **kw)
if(result and isinstance(result[0], (list, tuple))):
colnames = [c[0] for c in trans._cursor.description]
result = [dict(zip(colnames, item)) for item in result]
trans.close()
conn.commit()
return result
except:
excType, excValue, excTraceback = sys.exc_info()
try:
conn.rollback()
except:
log.err(None, 'Rollback failed')
raise excType, excValue, excTraceback
का एक परिणाम पैदा करता है
जब आप कोई क्वेरी चलाने के लिए, यदि आप एक
dict
वापस बजाय एक टपल के मिल जाएगा, हम निष्पादन के लिए इस कोड को आयात MySQLdb.cursors करने की ज़रूरत है। –