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]--+
___