Nie wiesz, co to jest sqlite.Binary
używasz, ale w każdym razie, oto przykład praca:
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]))
Uruchomiony z Python 2.6, kod ten pokazuje, jak oczekiwano i życzenia: „\ x00 \ x01 \ x02 \ x07 \ x04 \ x05 \ x0b \ x0c \ r \ x0e \ x0f \ x10 \ x11 \ x12 \ x13 \ x14 \ x15 \ x16 \ x17 \ x18 \ x19 \ X1A \ X1B \ X1C \ X1D \ x1e \ x1f "# $% & \ '() * +, -./'!
Note konieczność stosowania buffer
wstawić blob i str
aby ją przeczytać z powrotem jako ciąg (ponieważ używa on buffer
także jako wynik) - jeśli zamierzasz zapisać go na dysku, ten ostatni fragment nie będzie potrzebny (ponieważ metoda plików write
przyjmuje obiekty buforowe równie dobrze, jak przyjmuje ciągi).
Idealnie! Dziękuję bardzo za Twoją pomoc! – dmpop
@dmpop, nie ma za co! –
Dobry przykład, mam podobne pytanie (http://stackoverflow.com/questions/3915888/how-do-i-properly-format-a-stringio-objectpython-and-django-to-be-inted-into) Byłbym bardzo wdzięczny, gdybyś mógł rzucić na to okiem. –