Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] Problema al insertar datos en sqlite3

Estas en el tema de Problema al insertar datos en sqlite3 en el foro de Python en Foros del Web. Buenas noches gente, estuve buscando en la web y no puedo dar con el problema, recién estoy empezando con bases de datos y ando medio ...
  #1 (permalink)  
Antiguo 03/06/2014, 22:39
Avatar de dcaraballo  
Fecha de Ingreso: abril-2013
Ubicación: San José
Mensajes: 13
Antigüedad: 11 años, 1 mes
Puntos: 2
Exclamación Problema al insertar datos en sqlite3

Buenas noches gente, estuve buscando en la web y no puedo dar con el problema, recién estoy empezando con bases de datos y ando medio perdido.

Al parecer el error está cuando paso la tupla en el ciclo for

Espero puedan ayudarme

Cree una tabla en sqlite3:

Código Python:
Ver original
  1. # TABLA YA CREADA
  2. #cursor.execute("""CREATE TABLE incripciones (ID INTEGER PRIMARY KEY, nombre TEXT, apellido TEXT, edad INTEGER, ciudad TEXT, telefono TEXT)""")

Luego cree una función para insertar datos a través del usuario:

Código Python:
Ver original
  1. def agregaDatos():
  2.     print "Inscripciones..."
  3.     print ""
  4.     nombre = raw_input("Nombre: ")
  5.     apellido = raw_input ("Apellido: ")
  6.     edad = input("Edad: ")
  7.     ciudad = raw_input("Ciudad: ")
  8.     telefono = raw_input("Telefono: ")
  9.    
  10.     datos = (nombre, apellido, edad, ciudad, telefono)
  11.    
  12.     for t in datos:
  13.         cursor.execute("INSERT INTO incripciones (nombre, apellido, edad, ciudad, telefono) VALUES (?,?,?,?,?)", (t))
  14.  
  15.         connection.commit()
  16.    
  17.     print ""
  18.     print "Datos ingresados correctamente..."
  19.     print ""
  20.    
  21.     connection.close()

El error es el siguiente:

Nombre: Diego
Apellido: Perez
Edad: 30
Ciudad: San Jose
Telefono: 5878785
Traceback (most recent call last):
File "BaseDeDatos.py", line 42, in <module>
main()
File "BaseDeDatos.py", line 37, in main
agregaDatos()
File "BaseDeDatos.py", line 24, in agregaDatos
cursor.execute("INSERT INTO incripciones (nombre, apellido, edad, ciudad, telefono) VALUES (?,?,?,?,?)", (t))
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 5, and there are 4 supplied.

Saludos
  #2 (permalink)  
Antiguo 04/06/2014, 05:19
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 1 mes
Puntos: 292
Respuesta: Problema al insertar datos en sqlite3

Te falto una coma (,) para que t sea considerado una tupla:

Código Python:
Ver original
  1. cursor.execute("INSERT INTO incripciones (nombre, apellido, edad, ciudad, telefono) VALUES (?,?,?,?,?)", (t,))

http://stackoverflow.com/questions/1...he-current-sta
__________________
Salu2!
  #3 (permalink)  
Antiguo 04/06/2014, 07:11
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: Problema al insertar datos en sqlite3

Código Python:
Ver original
  1. def agregaDatos():
  2.     print "Inscripciones..."
  3.     print ""
  4.     nombre = raw_input("Nombre: ")
  5.     apellido = raw_input ("Apellido: ")
  6.     edad = int(raw_input("Edad: "))
  7.     ciudad = raw_input("Ciudad: ")
  8.     telefono = raw_input("Telefono: ")
  9.    
  10.     datos = (nombre, apellido, edad, ciudad, telefono)
  11.     cursor.execute("INSERT INTO incripciones (nombre, apellido, edad, ciudad, telefono) VALUES (?,?,?,?,?)", datos)
  12.     connection.commit()
  13.    
  14.     print ""
  15.     print "Datos ingresados correctamente..."
  16.     print ""
  17.    
  18.     connection.close()

Lo que pasa es estabas iterando sobre la tupla. Puedo le pasabas t, que contenia el primer elemento (nombre) y esto lo desempacaba como una tupla. Y si el nombre era corto obviamente te arrojaba error porque no alcanzaba a llenar todos los parametros.
  #4 (permalink)  
Antiguo 04/06/2014, 07:46
Avatar de dcaraballo  
Fecha de Ingreso: abril-2013
Ubicación: San José
Mensajes: 13
Antigüedad: 11 años, 1 mes
Puntos: 2
Respuesta: Problema al insertar datos en sqlite3

Cita:
Te falto una coma (,) para que t sea considerado una tupla:
Gracias por tu respuesta Italico76 por tu respuesta, pero ya había probado con lo que me dices y me seguía tirando el error.

Cita:
Lo que pasa es estabas iterando sobre la tupla. Puedo le pasabas t, que contenia el primer elemento (nombre) y esto lo desempacaba como una tupla. Y si el nombre era corto obviamente te arrojaba error porque no alcanzaba a llenar todos los parametros.
Gracias razpeitia, me confundí y quede nublado. Esta es la solución a mi problema.

Gracias nuevamente.

Etiquetas: gui, ip, sqlite3
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:08.