Function to convert fetchone() result from a list to a dictionary

Carsten Gehling carsten at sarum.dk
Tue Apr 29 09:32:24 CEST 2003


I'm fairly new to Python, and have yet to discover alle the little
details, that may make my programs look leaner and perhaps become
faster...

Using the DB API to access databases, I've stumbled upon what I would
call a shortcoming in the API (IMHO). All the fetch commands return
the results as lists instead of dictionaries.

So I've made my own conversion function, using the cursor.description
attribute. It's pretty straight-forward, so I was wondering, if
there's a smarter way to do this?

The function is like this:
-------------------------------
def cursor_fetchone_dict(cursor):
	result = cursor.fetchone()
	if result == None: return None
	result_dict = {}
	for i in range(len(result)):
		result_dict[cursor.description[i][0]] = result[i]
	return result_dict
-------------------------------

Example of use:
-------------------------------
import MySQLdb

def cursor_fetchone_dict(cursor):
	result = cursor.fetchone()
	if result == None: return None
	result_dict = {}
	for i in range(len(result)):
		result_dict[cursor.description[i][0]] = result[i]
	return result_dict

con = MySQLdb.connect(host='localhost', port=3306, user='xxxxx',
passwd='xxxxxx', db='xxxxxx')

cursor = con.cursor()
sql = "select * from sometable "
cursor.execute(sql)

result = cursor_fetchone_dict(cursor)
print result
-------------------------------

Any comments are welcome, TIA

- Carsten




More information about the Python-list mailing list