[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