【发布时间】:2012-06-18 20:04:00
【问题描述】:
sqlite 的官方文档建议将列表存储为二进制对象。谷歌给了我各种建议。一种是使用数组模块 (array.array('B', my_list2),但这不适用于非平凡的列表:
my_list2 = [(23,"Bob"), (22,"Alice")]
array.array('B',my_list2)
TypeError: an integer is required
另一个建议涉及使用泡菜,但有人插话称它不安全。最后一个建议是为每个列表变量创建一个新表,其中有几个。不过,我对制作复杂的架构犹豫不决。
我该怎么办?我应该如何将 my_list2 与其他列表一起存储在数据库中?
编辑
找到了一个优雅整洁的解决方案,可以用最少的代码处理简单和复杂的情况:
import json
my_list2 = [(23,"Bob Baker"), (22,"Alice Adams")]
my_list2_str = json.dumps(my_list2)
print type(my_list2_str)
<type 'str'>
list2 = json.loads(my_list2_str)
print list2, type(list2)
[(23, u"Bob Baker"), (22, u"Alice Adams")] <type 'list'>
【问题讨论】: