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

Ricardo Daniel Quiroga l2radamanthys en gmail.com
Lun Feb 29 02:43:28 ART 2016


Mmm guardarlas en Amazon digamos una buena idea si va a ser un servicio web, como dijeron es mas practico una carpeta generarle nombres aleatorio y solo guardar el nombre en la bd, ya que si mas no recuerdo creo que afectan la performance los dato blob una tabla con imágenes crece demasiado rápido y las búsquedas en tablas con ese tipo de datos se ralentizan, además tener las imágenes en una carpeta evita cualquier tarea de reconversión de las misma y gasto de procesamiento. Digamos las imágenes hoy en dia no pesan ya un par de Kb para considerarlo una buena idea. Por eso me parecía extraño ese tipo de implementación. saludos  

-----Mensaje original-----
De: Julian Agustin Cardonnet
Enviado: 28/02/2016 22:43
Para: Python Argentina
Asunto: Re: [pyar] INSERTAR UNA IMAGEN EN UNA BASE DE DATOS MYSQL




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/20160229/235d220b/attachment.html>


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