El 8 de junio de 2011 21:20, lopz <lowlife...@gmail.com> escribió: > El día 8 de junio de 2011 21:40, Manuel Enrique González Ramírez > <maeng...@gmail.com> escribió: > > > > > > El 8 de junio de 2011 18:59, lopz <lowlife...@gmail.com> escribió: > >> > >> El día 8 de junio de 2011 18:32, Manuel Enrique González Ramírez > >> <maeng...@gmail.com> escribió: > >> > El 8 de junio de 2011 16:43, Carlos Zuniga <carlos....@gmail.com> > >> > escribió: > >> >> > >> >> Hola, > >> >> > >> >> 2011/6/8 Manuel Enrique González Ramírez <maeng...@gmail.com>: > >> >> > Hola a tod@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] >
A esto es lo que solemos llamarle de forma coloquial.... error de indio. > 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() > > > > Ahora me vota este error: c.executemany('insert into tabla1(secuencia) values(?)', secc) ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 0 supplied. Tocará leer más a ver dónde está el error; por ahora, a trabajar.... > 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@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@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@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@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@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@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/