[pyar] INSERTAR UNA IMAGEN EN UNA BASE DE DATOS MYSQL
Lucio
lucionardelli en gmail.com
Lun Feb 29 13:04:28 ART 2016
Buenas tardes,
yo recomendaría aprovechar la sanitización (puaj!) de datos que te da el
conector sql, pasando los argumentos al cursor como recomendó @Gabriel
Davini
Como indica la excepción, el problema está en que al hacer:
sql = """INSERT INTO IMAGENES (imagen,tipo) VALUES (% s,% s)""" , (datos,
> formato)
>
lo que estás generando (como también dijeron), es una tupla. En particular,
una cuyo primer argumento es un string y la segunda es otra tupla:
> >>> datos = 'foo'
>>> formato = 'bar'
>>> sql = """INSERT INTO IMAGENES (imagen,tipo) VALUES (% s,% s)""" ,
> (datos, formato)
>>> print sql
>
('INSERT INTO IMAGENES (imagen,tipo) VALUES (% s,% s)', ('foo', 'bar'))
>>> sql[0]
'INSERT INTO IMAGENES (imagen,tipo) VALUES (% s,% s)'
>>> sql[1]
('foo', 'bar')
Te recomendaría le pases los argumentas al cursor:
sql = """INSERT INTO IMAGENES (imagen,tipo) VALUES (% s,% s)"""
try:
> #Ejecutamos el comando
> cursor.execute(sql, datos, formato)
> #Efectuamos los cambios en la base de datos
> bd_imagenes.commit()
> print "Los datos se agregaron con exito"
> except:
>
donde estás definiendo sql como un string (no una tupla) y le estás
"indicando" al cursor que tiene que ejecutar la consulta sql y poner en los
"agujeros" (los %s digamos) los valores pasados como argumento.
Espero que se entienda. saludos
El 29 de febrero de 2016, 10:52, Gabriel Davini <
gabrielfranciscodavini en gmail.com> escribió:
>
> 2016-02-28 21:34 GMT-03:00 Gerardo Rios <gsr.5392.tec en gmail.com>:
>
>>
>> Wrong number of arguments during string formatting
>>
>> QUE SI LO TRADUZCO ME DICE: Número incorrecto de argumentos en el formato
>> de cadenas
>>
>> PARA MI QUE EL ERROR ESTA EN EL TIPO DE DATOS DE LA IMAGEN, YO LO PUSE
>> COMO LONGBLOB Y CREO QUE TIENE QUE SER BLOB SOLAMENTE, VOY A VER QUE ME DA.
>>
>
> No, no tiene que ver con el tipo de dato de la columna
>
>
>> #se carga los datos en la base de datos
>>> sql = """INSERT INTO IMAGENES (imagen,tipo) VALUES (% s,% s)""" ,
>>> (datos, formato)
>>>
>>
> Lo que pasa es que aca estás creando una tupla, mirá:
>
> >>> datos = "foo"
> >>> formato = "bar"
> >>> sql = """INSERT INTO IMAGENES (imagen,tipo) VALUES (% s,% s)""" ,
> (datos, formato) # aca deberías reemplazar la , por %
> >>> print sql
> ('INSERT INTO IMAGENES (imagen,tipo) VALUES (% s,% s)', ('foo', 'bar'))
> >>> print type(sql)
> <type 'tuple'>
>
> Lo que tendrías que hacer es:
>
> >>> sql = """INSERT INTO IMAGENES (imagen,tipo) VALUES (% s,% s)""" %
> (datos, formato)
> >>> print sql
> INSERT INTO IMAGENES (imagen,tipo) VALUES (foo,bar)
> >>> print type(sql)
> <type 'str'>
>
> Saludos
> --
> Gabriel.
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20160229/859bea3f/attachment.html>
Más información sobre la lista de distribución pyar