将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
Run Code Online (Sandbox Code Playgroud)
mon*_*kut 19
似乎Brian的解决方案符合您的需求,但请记住,使用该方法您只需将数据存储为字符串即可.
如果要将原始二进制数据存储到数据库中(因此它不占用太多空间),请将数据转换为Binary sqlite对象,然后将其添加到数据库中.
query = u'''insert into testtable VALUES(?)'''
b = sqlite3.Binary(some_binarydata)
cur.execute(query,(b,))
con.commit()
Run Code Online (Sandbox Code Playgroud)
(由于某些原因,这似乎没有在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'
Run Code Online (Sandbox Code Playgroud)
使用不同的类型代码,而不是'B'
将数据视为不同类型.例如.'b'表示有符号字节序列或'i'
有符号整数.
归档时间: |
|
查看次数: |
11875 次 |
最近记录: |