【发布时间】:2013-02-02 09:41:30
【问题描述】:
我正在创建一个 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)对的数据。我很乐意提供有关字段集或示例代码可行性的任何意见。
我考虑过的另一个选项是 Django MVC 和 JSON 的组合。在这种情况下,我将为每个对象设置三列——类型、名称和属性。属性将是所有其他属性的 JSON 序列化(或其他适当的腌制方法),因此一旦拥有对象,就可以重构它的属性并查询集合。我会存储类似this 或this(链接)的东西。使用这种方法,我将无法轻松搜索字典中的任何属性。
非常感谢任何意见或指导。如果有人知道类似的项目,我很想知道。
【问题讨论】:
-
这听起来像是某种 NoSQL 后端(如 Mongo 或 Redis)的工作。甚至是直接来自 python 的基于文件的 SQLite 实例。您需要额外的 MVC 基础架构,还是只需要一个数据存储?