Non so cosa è che sqlite.Binary
si sta utilizzando, ma, in ogni caso, ecco un esempio di lavoro:
import sqlite3
# let's just make an arbitrary binary file...
with open('/tmp/abin', 'wb') as f:
f.write(''.join(chr(i) for i in range(55)))
# ...and read it back into a blob
with open('/tmp/abin', 'rb') as f:
ablob = f.read()
# OK, now for the DB part: we make it...:
db = sqlite3.connect('/tmp/thedb')
db.execute('CREATE TABLE t (thebin BLOB)')
db.execute('INSERT INTO t VALUES(?)', [buffer(ablob)])
db.commit()
db.close()
# ...and read it back:
db = sqlite3.connect('/tmp/thedb')
row = db.execute('SELECT * FROM t').fetchone()
print repr(str(row[0]))
Quando viene eseguito con Python 2.6, questo codice mostra, come previsto e desiderato: '\ x00 \ x01 \ x02 \ x03 \ x04 \ x05 \ x06 \ x07 \ x08 \ t \ n \ x0b \ x0c \ r \ X0E \ x0f \ x10 \ x11 \ x12 \ x13 \ x14 \ x15 \ x16 \ x17 \ x18 \ x19 \ X1A \ X1B \ X1c \ x1d \ x1e \ x1f "# $% & \ '() * +, -./'!
nota la necessità di utilizzare buffer
per inserire il blob, e str
di leggerlo indietro come una stringa (poiché utilizza lo buffer
tipo come risultato): se lo scriverai su disco, quest'ultimo passaggio non sarebbe necessario (poiché il metodo write
di file accetta gli oggetti buffer altrettanto bene quanto accetta le stringhe).
fonte
2010-07-22 16:31:40
Perfetto! Grazie mille per il vostro aiuto! – dmpop
@ dmpop, prego! –
Bel esempio, ho una domanda simile (http://stackoverflow.com/questions/3915888/how-do-i-properly-format-a-stringio-objectpython-and-django-to-be-inserted-into) , Sarei molto grato se potessi dare un'occhiata a questo. –