[Python] R: Re: MameError

Daniele Varrazzo piro a develer.com
Ven 12 Nov 2010 12:30:48 CET


On Fri, 12 Nov 2010 12:21:54 +0100 (CET), "girub a inwind.it"
<girub a inwind.it> wrote:

> provando con gli apici mi da sempre errore... un errore diverso:
> 
> C:\Python26\test>mysql.py
> Traceback (most recent call last):
>   File "C:\Python26\test\mysql.py", line 13, in <module>
>     print "%s, %s" % (row['nome'],row['cognome'])
> TypeError: tuple indices must be integers, not str

Non mi risulta si possa accedere al risultato come dizionario: è una
semplice tupla. Dovresti usare row[0], row[1] ecc.

Documentazione: http://mysql-python.sourceforge.net/MySQLdb.html

Puoi trasformare facilmente la tupla in un dizionario con:

    row = dict((d[0], x) for d, x in zip(cursor.description, row))
    # ora puoi usare row['nome'], row['cognome']

o in una named tuple:

    Record = namedtuple('Record', [d[0] for d in cursor.description])
    row = Record(*row)
    # ora puoi usare row.nome, row.cognome

se MySQLdb rispetta la DBAPI (il che dovrebbe):
http://www.python.org/dev/peps/pep-0249/.


-- 
Daniele Varrazzo - Develer S.r.l. 
http://www.develer.com


Maggiori informazioni sulla lista Python