Insertar variables en SQLITE3 Python

Iniciado por CaronteGold, 12 Septiembre 2010, 16:56 PM

0 Miembros y 1 Visitante están viendo este tema.

CaronteGold


   Buenas,


  Estoy aprendiendo a crear bases de datos usando Python y tengo un problema, a la hora de meter una variable como dato me da un error y todos los ejemplos que veo, o dan una string directa ... 'loquesea' , o meten una tupla.

  Lo que quiero es meter una variable que contenga el dato insertado por el user, de un raw_input().

el código:

import sqlite3 as dbapi
bbdd = dbapi.connect("bbdd.dat")
c = bbdd.cursor()

c.execute("""create table personas (
             nombre text,
             apellido text,
             fecha text,
             localidad text)""")

quien = raw_input("Nombre: ")
secname = raw_input("Apellidos: ")
cuando = raw_input("Fecha de nacimiento: ")
lugar = raw_input("Localidad: ")

c.execute("""insert into personas
             values (quien, secname, cuando, lugar)""")



Y el error :   values (quien, secname, cuando, lugar)""")
OperationalError: no such column: quien


Dice que ninguna columna : quien, pero se supone que ahí va el dato para la columna  :-\

Shell Root

#1
Cambia la siguiente linea,
Código (python) [Seleccionar]
c.execute("""insert into personas
            values (quien, secname, cuando, lugar)""")

por,
Código (python) [Seleccionar]
c.execute("INSERT INTO personas VALUES ('" + quien + "', '"  + secname + "', '" + cuando + "', '" + lugar + "')")
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

CaronteGold


   Gracias, me funcionó, yo había encontrado algo parecido, en vez de los + ponían & , y no me había funcionado, muchas gracias.

Shell Root

xD, porque en python la sistaxis para concatenar el caracterer +
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

CaronteGold


   Tienes idea de porque al mostrar los resultados me pone una u delante ¿?

(u'Nombre', u'Apellidos', u'Fecha', u'Localidad')


  El código que encontré es este:

c.execute("""select * from personas""")
bbdd.commit()

for tupla in c.fetchall():
    print tupla