Ich picke Python-Objekte in Django und speichere sie in MySQL db. Bisher habe ich diese einfachen Regeln befolgt:
cPickle.dumps(object)
#um Python-Objekt in ein gepicktes Objekt zu konvertieren
cPickle.loads(pickled_object)
# lädt das Python-Objekt aus dem markierten Objekt zurück
Mein Django Model Field
ist Text Field
MySQL-Datenbankfeld Typ ist longblob
Attribute binary
Die MySQL-Datenbankcodierung ist utf8_unicode_ci
Leider bekomme ich beim Laden des Python-Objekts folgenden Fehler.
%Vor% Wenn ich nach dem Fehlerwert x07xb6x0bx06
suche, scheint das ein Codierungsproblem zu sein.
Habe ich einen wichtigen Schritt verpasst ?? Kann mir jemand helfen, dieses Problem zu lösen?
Wenn Sie versuchen, die Ausgabe von cPickle.dumps
in einer VARCHAR
-Spalte zu speichern, liegt das Problem vor, dass Sie versuchen, eine Byte-Zeichenfolge in einer Zeichenspalte zu speichern. Der Fix in diesem Fall besteht darin, Ihr Objekt als unicode(base64.encode(cPickle.dumps(myobject)))
zu codieren und es dann zu speichern.
Alternativ:
%Vor%