使用Shelve存储物品的正确方法是什么?

时间:2013-12-09 19:14:17

标签: python

我想使用简单的平面文件而不是SQLite来存储记录。维护的数据遵循以下格式:

<Name> <Assignment> <Grade>

我创建了一个名为StudentRecord的简单类,

class StudentRecord:
    def __init__(self, name, assignment, grade):
        self.name = name
        self.assignment = assignment
        self.grade = grade

用于放入数据库。我希望该文件代表类似于逻辑的内容:

Bob Test1 99                (StudentRecord Object)
John Worksheet 39           (StudentRecord Object)
Chris Quiz 77               (StudentRecord Object)

我存储的每个对象的关键是什么?我想重新阅读所有这些单个对象,并附加到此数据库。

1 个答案:

答案 0 :(得分:0)

对于这种结构化的sqlite数据库实际上可能是最好的。如果您不想处理SQL,可以使用sqlalchemy,或者对于可以与sqlite进行串行连接的纯内存ORM,可以使用norman。但是,如果你真的设置搁置,那么它只取决于你想要如何访问数据。作为键值存储,您需要将您存储的每个对象表示为dict,这意味着您需要决定如何查找记录。例如,您可以按名称构建它:

{
    'Bob': {'assignment': 'Test1', grade: 99},
    'John': {'assignment': 'Worksheet', grade: 39}
}

当然,只有在您可以保证每个名称都是唯一的时候才有效。或者你可以创建一个唯一的id(例如UUID或只是一个自动分配的整数),但是一旦你开始这条路径,你很快就会发现自己正在创建你的“sqliteish”实现。这也假设你想要访问每个对象作为一个整体,但如果你的表真的那么简单,我不知道为什么你不会。