(sin asunto)

Gerardo Juarez gerardo en computo-industrial.com.mx
Jue Jul 12 17:36:25 CEST 2007


Dos cosas: he probado, y las dos formas de sintaxis se pueden usar con 
MySQLdb:

INSERT = "insert into tabla (nombre, clave) values (%s, %s))"
# ambas funcionan, por lo menos con SELECT:
cursor.execute(INSERT, (valor1, valor2))
cursor.execute(INSERT % (valor1, valor2))

Lo que me ha pasado es que cuando tienes un argumento, no me ha sido facil
saber si deben llevar '%s' o solamente %s, cuando el campo es de tipo
char, varchar, o similar. Esto solo pasa con INSERT. A esto me referia
en un mensaje anterior con el "problema de insercion de codigo", en el
que se puede modificar la instruccion SQL con comillas (') de mas.

Prueba a ver si son las comillas o que extranamente se requiera SQL % 
(args,...) con un INSERT.

saludos
Gerardo



On Wed, 11 Jul 2007, José Boris Bellido Santa María wrote:

> 2007/7/11, joana salgado gomez <joana_mendaro en hotmail.com>:
> >
> >    Hola chicos estoy haciendo el siguiente programa:
> >
> >    import MySQLdb
> >    def guardarCambios(DNIUsuario,nombreUsuario, apellidoUsuario,
> >    claveUsuario, pwdUsuario):
> >         db = MySQLdb.connect(host='localhost', user='root',
> >    passwd='joana', db='recetario')
> >         cursor = db.cursor()
> >         cursor.execute("""INSERT INTO usuario(dni,nombreUsuario,
> >    apellidoUsuario, claveUsuario, pwdUsuario) VALUES(%s,%s,%s,%s,%s) ON
> >    DUPLICATE KEY UPDATE""",(DNIUsuario,nombreUsuario, apellidoUsuario,
> >    claveUsuario, pwdUsuario))
> >         db.commit()
> >
> >
> Tu consulta esta mal hecha
> me parece q el error es q te falta % antes de
> (DNIUsuario,nombreUsuario, apellidoUsuario, claveUsuario, pwdUsuario)
> deberia ser:
> cursor.execute("""INSERT INTO usuario(dni,nombreUsuario,
> apellidoUsuario, claveUsuario, pwdUsuario) VALUES(%s,%s,%s,%s,%s) ON
> DUPLICATE KEY UPDATE"""%(DNIUsuario,nombreUsuario, apellidoUsuario,
> claveUsuario, pwdUsuario))
> 
> Saludos,
> 
> 




Más información sobre la lista de distribución Python-es