如何在数据库中存储字典/列表?
如果我有一个里面有很多层嵌套内容的字典,我该怎么把它存储到数据库里,作为一个字符串呢?然后等我准备好解析的时候,再把它转换回字典?
补充说明:我只是想把它转换成字符串……然后再转换回字典。
5 个回答
3
你为什么不使用pickle模块来进行一些序列化和反序列化呢?
4
选项:
1) Pickling(序列化)
2) XML(可扩展标记语言)
3) JSON(JavaScript对象表示法)
还有其他的选择,我相信有很多。这些选项的选择主要取决于你对数据可移植性的需求有多大。
2
在你提到的条件下,最好的选择是:
import cPickle
...
thestring = cPickle.dumps(thedict, -1)
这里的 -1
是为了确保最有效的序列化方式,它会生成一个 二进制 字符串(就是一串任意的字节)。如果你需要一个 ascii 字符串(比如说,因为要进行一些Unicode转换,而你不能把字段的类型从 TEXT
改成 BLOB
),那么就要避免使用 -1
,但这样效率会降低。
无论哪种情况,想要从字符串中再得到字典,
thenewdict = cPickle.loads(thestring)