Hay una tontería de la conexión de python con MySQL que me ha llamado la atención y aprovecho para comentar aquí. El tema es que según obtengamos el cursor de la conexión para hacer las consultas, podemos acceder a los resultados de una manera o de otra.
Si obtenemos el cursor de esta manera
conn = MySQLdb.connect (….)
cursor = conn.cursor()
una vez que hagamos una consulta y obtengamos una de las filas resultado, debemos acceder a cada uno de los campos usando un índice de un array
cursor.execute ("select * from tabla")
fila = cursor.fetchone()
# para acceder al primer campo
print fila[0]
Sin embargo, al obtener el cursor podemos decir que queremos que las filas sean dictionaries, en vez de tuplas, de manera que podemos acceder a los campos usando el nombre del campo, en vez de un índice. Para ello, basta con obtener el cursor de esta manera
conn = MySQLdb.connect (…)
cursor = conn.cursor(MySQLdb.cursors.DictCursor)
y así podemos acceder a los campos a través de su nombre
cursor.execute("select * from tabla")
fila = cursor.fecthone()
# para acceder a uno de los campos
print fila["nombre_columna"]
Una tontería, pero estoy acostumbrado a java y a C++ y no a lenguajes tan flexibles.
Muy util la información, solo que en la instrucción para definir el tipo de cursor se omitio una letra (s), lo correcto es: cursor = conn.cursor(MySQLdb.cursors.DictCursor)
Saludos.
Corregido, muchas gracias.