[pyar] Problemas guardando un pickle en un blob de mysql

Juan BC jbc.develop en gmail.com
Mie Mayo 23 13:19:34 ART 2012


El día 23 de mayo de 2012 13:16, Julian Agustin Cardonnet
<jcardonnet en gmail.com> escribió:
> Hola lista,
> Estoy intentando guardar un pickle en un LONGBLOB de MySQL pero segun
> el contenido del pickle me falla o no. Por lo que pude descubrir el
> tema esta en alguna comilla suelta  adentro del pickle que rompen el
> query.
>
> Usando un query parametrizado como este:
>  cursor.execute("UPDATE tabla SET campo1=?,campo2=? WHERE
> campo2=?",(pickle1,pickle2,valorCampo2))
> obtengo el siguiente traceback:
>  File "archivo.py", line 54, in storeModel
>      cursor.execute("UPDATE tabla SET campo1=?,campo2=? WHERE
> campo2=?",(pickle1,pickle2,valorCampo2))
>  File "D:\python2.7\lib\site-packages\MySQLdb\cursors.py", line 159, in execute
>    query = query % db.literal(args)
> TypeError: not all arguments converted during string formatting
>
> Si el query lo hago de esta manera:
>   cursor.execute("UPDATE tabla SET campo1='%s',campo2='%s' WHERE
> campo2='%s'",(pickle1,pickle2,valorCampo2))
> El traceback que me tira es:
>  File "archivo.py", line 54, in storeModel
>    cursor.execute(queries['storeModel'] , (pickledModel,pickledVectorizer,'2'))
>  File "D:\python2.7\lib\site-packages\MySQLdb\cursors.py", line 174, in execute
>    self.errorhandler(self, exc, value)
>  File "D:\python2.7\lib\site-packages\MySQLdb\connections.py", line
> 36, in defaulterrorhandler
>    raise errorclass, errorvalue
> _mysql_exceptions.ProgrammingError: (1064, "You have an error in your
> SQL syntax; check the manual that corresponds to your MySQL server
> version for the right syntax to use near
> 'S\\'x\\\\x9c\\\\xcd]\\\\xfbS\\\\x13\\\\xcb\\\\xb6\\\\xfe=\\\\x7f\\\\x85\\\\xba\\\\x11\\\\xd8\\\\xa8\\\\xd8\\\\x'
> at line 1")
>
> Probe usar la funcion QUOTE() de MySQL dentro del query,
> MySQLdb.escape_string() aplicado a los parametros, y tambien volver a
> encerrar todo entre comillas a mano pero siempre termino con alguno de
> los 2 errores que puse arriba. La verdad que ya no se me ocurre nada
> mas para probar.
> Alguna sugerencia?
>
> Saludos,
> Julian
> _______________________________________________
> 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


antes de guardarlo hace

cadena.encode("base64")

y antes de depicklearlo hace un decode("base64")


-- 
Juan B Cabral



More information about the pyar mailing list