当前位置:  开发笔记 > 编程语言 > 正文

Python,Sqlite3 - 如何将列表转换为BLOB单元格

如何解决《Python,Sqlite3-如何将列表转换为BLOB单元格》经验,为你挑选了2个好方法。

将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



1> monkut..:

似乎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



2> Brian..:

假设您希望将其视为8位无符号值的序列,请使用该array模块.

a = array.array('B', data)
>>> a.tostring()
'\x00\x01\x02\x03\x04\x05'

使用不同的类型代码,而不是'B'将数据视为不同类型.例如.'b'表示有符号字节序列或'i'有符号整数.

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有