如何在数据库中存储字典/列表?

时间:2010-02-22 13:49:21

标签: python database string list dictionary

如果我有一个充满嵌套内容的字典,如何将其作为字符串存储在数据库中?然后,当我准备解析时将其转换回字典?

编辑:我只想将其转换为字符串...然后返回字典。

5 个答案:

答案 0 :(得分:4)

选项:

1)酸洗

2)XML

3)JSON

我相信其他人。关于可移植性对您意味着什么,它有很多工作要做。

答案 1 :(得分:3)

为什么不使用pickle模块中的某些序列化/反序列化?

http://docs.python.org/library/pickle.html

答案 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:

    • 专业:易于使用,快速和原生的python方式进行序列化。
    • 缺点:只有基于python的应用才能访问数据。