Saving Python Pickled objects in MySQL db
If you are trying to store the output of cPickle.dumps
in a VARCHAR
column, then your issue is that you are trying to store a byte-string in a character column. The fix in that case is to encode your object as unicode(base64.encode(cPickle.dumps(myobject)))
and then store it.
Alternatively:
object2varchar = lambda obj: unicode(base64.encode(cPickle.dumps(obj)))
store(object2varchar([1, 'foo']))
one more rule: connect to mysql with option charset=utf8
?
UPD1: Sometimes it is a good idea to look at the complete SQL query, I usually do it that way:
>>> conn = MySQLdb.connect(**db_params)
>>> "INSERT INTO tbl VALUES (%s)" % conn.literal((your_pickled_item, ))