No estoy seguro que es que sqlite.Binary
que está utilizando, pero, de todos modos, esto es un ejemplo de trabajo:
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]))
Cuando se ejecuta con Python 2.6, este código de muestra, como se espera y se desea: '\ 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 necesidad de utilizar buffer
para insertar la burbuja, y str
para leerlo volver como una cadena (ya que usa el buffer
escriba también como resultado) - si va a escribirlo en el disco, el último pasaje no sería necesario (dado que el método de archivos write
acepta los objetos del búfer igual de bien que acepta cadenas).
¡Perfecto! ¡Muchas gracias por tu ayuda! – dmpop
@dmpop, de nada! –
Buen ejemplo, tengo una pregunta similar (http://stackoverflow.com/questions/3915888/how-do-i-properly-format-a-stringio-objectpython-and-django-to-be-inserted-into) , Estaría muy agradecido si pudieras echarle un vistazo. –