Print type(c)
Que tipo de dato regresa ?
El 01/06/11, Manuel Enrique González Ramírez <maen...@gmail.com> escribió:
--
Enviado desde mi dispositivo móvil
_______________________________________________
Python-es mailing list
Pyth...@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/
Print type(row)
El 01/06/11, Carlos Herrera Polo <carlos.he...@gmail.com> escribió:
Saludos.Se me presenta un situación en la empresa para la que trabajo que quiero solucionar con un script de Python acompañado de SQLite. El asunto es que no tengo mucha experiencia con SQLite y al querer hacer un count de una tabla me arroja el resultado con el siguiente formato:<sqlite3.Cursor object at 0x0126B4E0>El fragmento de codigo que me genera el resultado es este:c.execute('SELECT * FROM tabla')for row in c:print row
c.execute('SELECT * FROM tabla')
rows = c.fetchall() ## Para recoger todos los resultados
for row in rows:
print(row)
Y ya verías los resultados. Si quisieras recoger resultados
individualmente, emplea fetchone()
Saludos
Joe
El mié, 01-06-2011 a las 15:19 -0500, Manuel Enrique González Ramírez
escribió:
http://docs.python.org/library/sqlite3.html#module-sqlite3
http://www.sqlite.org/
Saludos
Joe
El mié, 01-06-2011 a las 15:19 -0500, Manuel Enrique González Ramírez
escribió:
<sqlite3.Cursor object at 0x0126B4E0>
Necesitas recoger los datos en una variable, bien empleado el metodo
fetchall() para recoger todos los resultados o bien fetchone() para ir
recogiendo uno a uno. Bueno, la verdad es que puedes emplear el cursor
como un iterable, por eso te deja hacer:
for row in c:
print row
pero cuando intentas hacer hacer el último print, no lo iteras, por lo
tanto te muestra el objeto.
Yo por eso te recomiendo emplear fetchone() y fetchall() siempre y así
te evitas estos problemas.
Saludos
Joe
El mié, 01-06-2011 a las 16:38 -0500, Manuel Enrique González Ramírez
Ve lo que dice Joe. No he usado nunca SQLite, pero supongo que sigue la
DB-API 2.0 de Python. Si ese es el caso, 'c' en tu
código es un cursor y por lo tanto, como dice Joe, c.execute() ejecuta
nada más el *query* . Luego tienes que obtener los
datos con c.fetchall() o c.fetchone(). En el caso que pones en el que
obtienes un sólo número, pasa como en este ejemplo:
cur = db.cursor()
cur.execute('select count(*) from articulos') # cuantos registros
hay en esta tabla
row = cur.fetchone()
print row[0] # imprime cuantos registros obtuvo
Esto es, aún siendo count(*) lo que quieres, te va a regresar un arreglo
(o lista), por lo que lo recibes como tal y el número es
el primer y único elemento de la lista (o arreglo).
Lo que estás imprimiendo es el cursor mismo, por eso lo transforma a una
representación imprimible y obtienes:
<sqlite3.Cursor object at 0x0126B4E0>
Saludos
Gerardo
Manuel Enrique González Ramírez wrote:
> Perdón a todos,
>
> De los afanes me comí unas líneas de código (justos las del problema):
>
> # Consultemos los datos
> c.execute('SELECT * FROM tabla')
>
> for row in c:
> print row
>
> c.execute('select count(secuencia) from tabla')
> print 'Total transacciones: ',c
>
>
>
> El 1 de junio de 2011 16:25, joe di castro <enxe...@gmail.com
> <mailto:enxe...@gmail.com>> escribió:
> > Pyth...@python.org <mailto:Pyth...@python.org>
> > http://mail.python.org/mailman/listinfo/python-es
> > FAQ: http://python-es-faq.wikidot.com/
>
>
> _______________________________________________
> Python-es mailing list
> Pyth...@python.org <mailto:Pyth...@python.org>
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
>
>
> --
> Manuel Enrique González Ramírez
> http://maengora.blogspot.com
> ------------------------------------------------------------------------
El problema es el mismo, estas intentando imprimir directamente el
objeto cursor, por eso te aparece ese resultado:
Necesitas recoger los datos en una variable, bien empleado el metodo
<sqlite3.Cursor object at 0x0126B4E0>
fetchall() para recoger todos los resultados o bien fetchone() para ir
recogiendo uno a uno. Bueno, la verdad es que puedes emplear el cursor
como un iterable, por eso te deja hacer:
pero cuando intentas hacer hacer el último print, no lo iteras, por lo
for row in c:
print row
tanto te muestra el objeto.
Yo por eso te recomiendo emplear fetchone() y fetchall() siempre y así
te evitas estos problemas.
Saludos
Joe