【问题标题】:How to implement database compatible python objects with arbitrary fields/arbitrary number of fields如何使用任意字段/任意数量的字段实现数据库兼容的python对象
【发布时间】: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 序列化(或其他适当的腌制方法),因此一旦拥有对象,就可以重构它的属性并查询集合。我会存储类似thisthis(链接)的东西。使用这种方法,我将无法轻松搜索字典中的任何属性。

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

【问题讨论】:

  • 这听起来像是某种 NoSQL 后端(如 Mongo 或 Redis)的工作。甚至是直接来自 python 的基于文件的 SQLite 实例。您需要额外的 MVC 基础架构,还是只需要一个数据存储?

标签: python sql django json


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2014-10-10
    • 2015-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    • 1970-01-01
    • 2016-12-11
    相关资源
    最近更新 更多