Czy istnieje sposób na zwrócenie wyniku słownika z zapytania adbapi do MySQL?Słownik zwrotny skróconego MySQL MySQL
[name: 'Bob', phone_number: '9123 4567']
Domyślna krotka zwrotu.
['Bob', '9123 4567']
Do prostego Python & MySQL możemy użyć MySQLdb.cursors.DictCursor. Ale jak go używać z skręconych adbapi
UPD: Rozwiązałem go, ale myślę, że nie powinno być lepszy sposób. Moje rozwiązanie: wystarczy zastąpić metodę * _runInteraction * klasy 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
Obecnie mamy trzeba wykonać import MySQLdb.cursors, aby wykonać ten kod. –