[pyar] Problemas guardando un pickle en un blob de mysql
Julian Agustin Cardonnet
jcardonnet en gmail.com
Mie Mayo 23 13:16:58 ART 2012
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
More information about the pyar
mailing list