[Python-es] Problemas con executemany desde python con SQLite

lopz lowlifebob en gmail.com
Jue Jun 9 04:20:10 CEST 2011


El día 8 de junio de 2011 21:40, Manuel Enrique González Ramírez
<maengora en gmail.com> escribió:
>
>
> El 8 de junio de 2011 18:59, lopz <lowlifebob en gmail.com> escribió:
>>
>> El día 8 de junio de 2011 18:32, Manuel Enrique González Ramírez
>> <maengora en gmail.com> escribió:
>> > El 8 de junio de 2011 16:43, Carlos Zuniga <carlos.zun en gmail.com>
>> > escribió:
>> >>
>> >> Hola,
>> >>
>> >> 2011/6/8 Manuel Enrique González Ramírez <maengora en gmail.com>:
>> >> > Hola a tod en s,
>> >> > Estoy tratando de insertar un archivo desde Python con SQLite.  La
>> >> > primera
>> >> > vez funciono sin inconvenientes, pero al vaciar la tabla y correr
>> >> > nuevamente
>> >> > el script falla arrojando este error:
>> >> > Traceback (most recent call last):
>> >> >   File "/home/manuel/python/diferencias/temp2.py", line 45, in
>> >> > <module>
>> >> >     c.executemany('insert into tabla(secuencia) values(?)', secc)
>> >> > AttributeError: 'str' object has no attribute 'executemany'
>> >>
>> >> Parece que tu objeto c es una cadena de texto, no un cursor de sqlite
>> >>
>> >> >
>> >> > El fragmento del codigo
>> >> > secc= csv.reader(open('datosg.csv'))
>> >> > c.executemany('insert into tabla(secuencia) values(?)', secc)
>> >> > conexion.commit()
>> >> >
>> >>
>> >> Tal vez te falta c = conexion.cursor() antes de ese fragmento?
>> >
>> >  Ya la tenía definida:
>> > # Datos de conexion
>> > conexion = sqlite3.connect('dif_db.sqlite')
>> > # Configuracion del cursor
>> > c = conexion.cursor()
>> >>
>>
>> lo tienes así?
>>
>> conexion = sqlite3.connect('dif_db.sqlite')
>> c = conexion.cursor()
>> c.execute.....
>>
>> Si es así no debería decirte que c es un str, podrías poner el código
>> completo de esa parte?
>
> Código completo
> #!/usr/bin/env python
> # -*- coding: cp1252 -*-
> import os,sys,csv
> import sqlite3
> # Datos de conexion
> conexion = sqlite3.connect('dif_db.sqlite')
> # Configuracion del cursor
> c = conexion.cursor()
> # Limpio las tablas
> c.execute('delete from tabla1')
> conexion.commit()
> print 'Tabla1 inicializada'
> c.execute('delete from tabla2')
> conexion.commit()
> print 'Tabla2  inicializada'
> # Solicito el nombre de los archivos a analizar
> fc = open('archivo1.txt','r')
> fg = open('archivo2.txt','r')
> ficherosalida = open('datosc.csv','w')
> for linea in fc:
>     ficherosalida.write(linea.split('|')[-1])
> fc.close()
> ficherosalida.close()
> print 'Datos de Tabla1 preparados'
> ficherosalida2 = open('datosg.csv','w')
> for linea2 in fg:
>     c = linea2[7:17]

En esta parte está sobre escribiendo tu variable y se le asigna un
tipo str, con cambiar:
c = linea2[7:17]
por
linea = linea2[7:17]
y
>     ficherosalida2.write(c)

por ficherosalida2.write(linea)

deberia funcionar

>     ficherosalida2.write('\n')
> fg.close()
> ficherosalida2.close()
>
>
> # Abre el archivo y lo prepara para insertar los datos
> # en la bdd
> secc= csv.reader(open('datosg.csv'))
> c.executemany('insert into tabla1(secuencia) values(?)', secc)
> conexion.commit()
> conexion.close()
>

Y.. es que por eso se recomienda poner nombres de variables que
describan al objeto,
por ejemplo cursor en lugar de c me parece mejor


>>
>> saludOS
>>
>> >> Saludos
>> >> --
>> >> Linux Registered User # 386081
>> >> A menudo unas pocas horas de "Prueba y error" podrán ahorrarte minutos
>> >> de leer manuales.
>> >> _______________________________________________
>> >> Python-es mailing list
>> >> Python-es en 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
>> >
>> > _______________________________________________
>> > Python-es mailing list
>> > Python-es en python.org
>> > http://mail.python.org/mailman/listinfo/python-es
>> > FAQ: http://python-es-faq.wikidot.com/
>> >
>> >
>>
>>
>>
>> --
>> lopz es libre, usa --> GNU/linux gentoo
>>
>> +--[RSA 2048]--+
>> |  ..o.o=+       |
>> |   o =o*.+      |
>> |  . . *oO .      |
>> |     .EBoo      |
>> |      o.S         |
>> +--[lopz.org]--+
>> _______________________________________________
>> Python-es mailing list
>> Python-es en 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
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>



-- 
lopz es libre, usa --> GNU/linux gentoo

+--[RSA 2048]--+
|  ..o.o=+       |
|   o =o*.+      |
|  . . *oO .      |
|     .EBoo      |
|      o.S         |
+--[lopz.org]--+


Más información sobre la lista de distribución Python-es