如果我有一个充满嵌套内容的字典,如何将其作为字符串存储在数据库中?然后,当我准备解析时将其转换回字典?
编辑:我只想将其转换为字符串...然后返回字典。
答案 0 :(得分:4)
选项:
1)酸洗
2)XML
3)JSON
我相信其他人。关于可移植性对您意味着什么,它有很多工作要做。答案 1 :(得分:3)
为什么不使用pickle模块中的某些序列化/反序列化?
答案 2 :(得分:2)
最好,在您声明的条件下:
import cPickle
...
thestring = cPickle.dumps(thedict, -1)
-1
确保最有效的序列化并生成二进制字符串(任意字节字符串)。如果你需要一个 ascii 字符串(因为例如某些Unicode转码将会发生而你无法将字段的类型从TEXT
转换为BLOB
),请避免-1
,但你的效率会降低。
要么稍后从字符串中取回字典,在任何一种情况下,
thenewdict = cPickle.loads(thestring)
答案 3 :(得分:2)
有许多序列化方法,JSON是可读的,相当紧凑,原生支持和可移植。我更喜欢它而不是pickle,因为后者可以执行任意代码并可能引入安全漏洞,并且因为它的可移植性。
根据您的数据布局,您还可以使用ORM将数据直接映射到数据库结构中。
答案 4 :(得分:1)
您有两个选择
使用标准序列化格式(json,xml,yaml,...)
使用cPickle: