[pyar] INSERTAR UNA IMAGEN EN UNA BASE DE DATOS MYSQL

Julian Agustin Cardonnet jcardonnet en gmail.com
Dom Feb 28 22:43:07 ART 2016


Lo que te esta fallando es la sustitucion en la cadena porque te falta el
operador %.
Asi que en en vez de hacer:
sql = """INSERT INTO IMAGENES (imagen,tipo) VALUES (% s,% s)""" , (datos,
formato)
proba con:
sql = """INSERT INTO IMAGENES (imagen,tipo) VALUES (% s,% s)""" %(datos,
formato) // Reemplace la coma por el signo de porcentaje.

La diferencia entre Long Blob y Blob es solo el tamaño, asi que en todo
caso te daria una excepcion quejandose de que los datos no caben en el
campo.

Respecto a como guardar los archivos, a menos que tengas una buena razon
para no hacerlo, yo empezaria simplemente metiendolos en alguna carpeta y
en la DB tan solo guardar el nombre del archivo. De todas formas, sin saber
cuales son los escenarios de uso asi en el aire es medio dificil
recomendarte como encarar el almacenamiento de las imagenes.

Saludos,
Julian

El 28 de febrero de 2016, 21:34, Gerardo Rios <gsr.5392.tec en gmail.com>
escribió:

> HOLA GABRIEL DAVINI:
>
> GRACIAS POR PASARME LA LISTA DE EXCEPCIONES, AGREGUE LA EXCEPCION GENERICA
> COMO ME PASASTE EN EL EJEMPLO Y LA EXCEPCION ME TIRA EL SIGUIENTE ERROR:
>
> 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.
>
> HACIENDO LA PRUEBA, ME SALE EL MISMO MENSAJE: Wrong number of arguments
> during string formatting
>
>
> SALUDOS
>
> GERARDO
>
> El 27 de febrero de 2016, 12:27, Gabriel Davini <
> gabrielfranciscodavini en gmail.com> escribió:
>
>>
>> 2016-02-26 23:13 GMT-03:00 Gerardo Rios <gsr.5392.tec en gmail.com>:
>>
>>>   #se carga los datos en la base de datos
>>>   sql = """INSERT INTO IMAGENES (imagen,tipo) VALUES (% s,% s)""" ,
>>> (datos, formato)
>>>
>>
>> Aca estás creando una tupla. Me parece que lo que estás intentando hacer
>> aca es:
>>
>> sql = """INSERT INTO IMAGENES (imagen,tipo) VALUES (% s,% s)"""  %
>> (datos, formato)
>>
>> o mejor:
>>
>> sql = """INSERT INTO IMAGENES (imagen,tipo) VALUES (% s,% s)"""
>>
>> cursor.execute(sql, datos, formato)
>>
>> Digo mejor porque de esta manera el connector de mysql se debería
>> encargar de sanitizar las variables y evitar asi algun ataque por inyección
>> de SQL.
>>
>>
>>>   try:
>>>    #Ejecutamos el comando
>>>     cursor.execute(sql)
>>>    #Efectuamos los cambios en la base de datos
>>>     bd_imagenes.commit()
>>>     print "Los datos se agregaron con exito"
>>>   except:
>>>    #Si se genero algún error revertamos la operación
>>>     bd_imagenes.rollback()
>>>     print "no se pudo agregar los datos"
>>>
>>
>> *No* es recomendable[0] atrapar excepciones de forma genérica, ya que te
>> puede llevar a no identificar cuál es el error y por ende no poder
>> solucionarlo. Si no estás seguro de qué excepciones te puede crear una
>> parte del código, podés hacer algo asi[1] al principio, cosa de poder
>> debuguearlo, y luego si agregar las excepciones específicas.
>>
>> Saludos!
>>
>> [0] http://www.tutorialspoint.com/python/python_exceptions.htm
>> [1] http://linkode.org/eNJoBYXPc36bgha4mU7fD2
>> --
>> 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
>>
>
>
> _______________________________________________
> 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/20160228/a7d96d03/attachment-0001.html>


Más información sobre la lista de distribución pyar