Probleme mit MySQL, Syntax und senden von Blobs.
Verfasst: Montag 8. Juni 2009, 14:46
Hallo Leute,
seid ein paar Tagen versuche ich Binärdatein in meine MySQL Datenbank zu speichern.
Diese Daten sind nichts anderes als gepackte cPickle Objekte.
Dazu möchte ich eigentlich die Funktion von mySQL nutzen coursor.execute(Anweisung, Argument).
Leider wird mir dann ständig gesagt, dass die MySQL-Syntax falsch wäre.
Hänge ich aber die Argumente direkt an geht es, ob wohl ich sonst nichts geändert habe.
Funktionierender Code.
Ein weiteres Problem ist,
dass es unter Windows läuft und unter Linux eine decoding error gibt.
Habe das Webauf dem Kopf gestellt und alles mögliche versucht, irgenwie sehe ich den Wald vor lauter Bäume nicht.
Bin daher für jede Hilfe dankbar.
Gruß der KC.
seid ein paar Tagen versuche ich Binärdatein in meine MySQL Datenbank zu speichern.
Diese Daten sind nichts anderes als gepackte cPickle Objekte.
Dazu möchte ich eigentlich die Funktion von mySQL nutzen coursor.execute(Anweisung, Argument).
Leider wird mir dann ständig gesagt, dass die MySQL-Syntax falsch wäre.
Hänge ich aber die Argumente direkt an geht es, ob wohl ich sonst nichts geändert habe.
Code: Alles auswählen
def schreibe(self,name,obj,zeit): # geht nicht
p=cPickle.dumps(obj,-1)
c=zlib.compress(pickledata)
blob= MySQLdb.escape_string(c)
sqlargs=(name,zeit,blob)
CMD="INSERT INTO %s (zeit,obj) VALUES(%s,'%s');"
ret=self.execute(CMD,sqlargs)
return ret
Code: Alles auswählen
def schreibe(self,name,obj,zeit): # geht
p=cPickle.dumps(obj,-1)
c=zlib.compress(p)
blob= MySQLdb.escape_string(compressed)
sqlargs=(name,zeit,blob)
CMD="INSERT INTO %s (zeit,obj) VALUES(%s,'%s');"%sqlargs
ret=self.execute(CMD)
return ret
dass es unter Windows läuft und unter Linux eine decoding error gibt.
Code: Alles auswählen
UnicodeDecodeError: 'ascii' codec can't decode byte 0x9c in position 64: ordinal not in range(128)
Bin daher für jede Hilfe dankbar.
Gruß der KC.