[Python-es] Problemas con executemany desde python con SQLite
Manuel Enrique González Ramírez
maengora en gmail.com
Jue Jun 9 03:40:31 CEST 2011
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]
ficherosalida2.write(c)
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()
>
> 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
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20110608/9683f11e/attachment.html>
Más información sobre la lista de distribución Python-es