将python中的列表作为二进制数据(即BLOB单元)转储到sqlite3 DB中的最优雅方法是什么?
data = [ 0, 1, 2, 3, 4, 5 ] # now write this to db as binary data # 0000 0000 # 0000 0001 # ... # 0000 0101
monkut.. 19
似乎Brian的解决方案符合您的需求,但请记住,使用该方法您只需将数据存储为字符串即可.
如果要将原始二进制数据存储到数据库中(因此它不占用太多空间),请将数据转换为Binary sqlite对象,然后将其添加到数据库中.
query = u'''insert into testtable VALUES(?)''' b = sqlite3.Binary(some_binarydata) cur.execute(query,(b,)) con.commit()
(由于某些原因,这似乎没有在python文档中记录)
以下是有关sqlite BLOB数据限制的一些注意事项:
http://effbot.org/zone/sqlite-blob.htm
似乎Brian的解决方案符合您的需求,但请记住,使用该方法您只需将数据存储为字符串即可.
如果要将原始二进制数据存储到数据库中(因此它不占用太多空间),请将数据转换为Binary sqlite对象,然后将其添加到数据库中.
query = u'''insert into testtable VALUES(?)''' b = sqlite3.Binary(some_binarydata) cur.execute(query,(b,)) con.commit()
(由于某些原因,这似乎没有在python文档中记录)
以下是有关sqlite BLOB数据限制的一些注意事项:
http://effbot.org/zone/sqlite-blob.htm
假设您希望将其视为8位无符号值的序列,请使用该array
模块.
a = array.array('B', data) >>> a.tostring() '\x00\x01\x02\x03\x04\x05'
使用不同的类型代码,而不是'B'
将数据视为不同类型.例如.'b'表示有符号字节序列或'i'
有符号整数.