如何使用任意字段/任意数量的字段实现数据库兼容的python对象

时间:2013-02-18 01:21:05

标签: python sql django json

我正在创建一个python程序来与许多不同类型的概念对象进行交互。例如,它可能代表一个人,在这种情况下它会有这样的东西:

type = "person"
name = "Bono"
profession = "performer"
nationality = "Irish"

然而,它也可能代表一本杂志,在这种情况下,它看起来像这样

type = "publication"
name = "Rolling Stone"
editor = ("Jann Wenner" , "Will Dana")
founding_year = "1967"

除了类型和名称之外,所有其他字段都是可选的。这是棘手的一点 - 它是为刮刀编写的代码的一部分,因此所有其他字段都是动态确定/创建的。换句话说,我们不会知道我们需要一个“编辑器”字段,直到刮刀将“编辑器”吐回代码

理想情况下,这可以作为列表的python字典相当直接地实现。但是,我们将处理大量记录 -​​ 太多而无法同时保留在内存中。因此,我希望拥有数据库兼容性 - 类似于Django的MVC,因此我们可以轻松查询记录集。

我考虑过的一个选项是Django场景集,但看起来它们仍处于测试阶段,我担心我会丢失一些我可以存储的一般性 - 理想情况下,我可以存储任何类型具有键,(value_list)对的数据。我喜欢关于fieldsets或示例代码的可行性的任何意见。

我考虑过的另一个选择是Django MVC和JSON的组合。在这种情况下,每个对象都有三列 - 类型,名称和属性。属性将是所有其他属性的JSON序列化(或其他适当的pickle方法),因此一旦有了对象,就可以重新构建它的属性并查询集合。我会存储类似thisthis(链接)的内容。使用这种方法,我将无法轻松搜索dict中的任何属性。

我非常感谢任何意见或指导。如果有人知道类似的项目,我很想知道。

1 个答案:

答案 0 :(得分:1)

这似乎是使用NoSQL数据库的绝佳机会。像MongoDB这样的东西不依赖于固定的模式,因此它可能适合您的场景。

相关问题