Python 使用货架储存物品的正确方式是什么?

Python 使用货架储存物品的正确方式是什么?,python,Python,我想用一个简单的平面文件而不是SQLite来存储记录。维护的数据采用以下格式: <Name> <Assignment> <Grade> 用于放入数据库。我希望该文件在逻辑上表示类似以下内容的内容: Bob Test1 99 (StudentRecord Object) John Worksheet 39 (StudentRecord Object) Chris Quiz 77 (S

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

<Name> <Assignment> <Grade>
用于放入数据库。我希望该文件在逻辑上表示类似以下内容的内容:

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

我存储的每个对象的密钥是什么?我想读回所有这些单独的对象,并将其附加到此数据库。

对于这种结构化的对象,sqlite数据库实际上可能是最好的。如果你不想处理SQL,你可以使用,或者对于一个纯粹的内存ORM,它可以序列化到sqlite,也可以从sqlite中序列化,这里有。但是,如果您真的被设置为搁置,那么这取决于您希望如何访问数据。由于它是一个键值存储,您需要将存储的每个对象表示为dict,这意味着您需要决定如何查找记录。例如,您可以按名称对其进行结构设置:

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

当然,只有保证每个名称都是唯一的,这才有效。或者,您可以创建一个唯一的id(例如,UUID或一个自动分配的整数),但一旦您沿着该路径开始,您将很快发现自己正在创建“sqliteish”实现。这还假设您希望访问每个对象作为一个整体,但如果您的表真的那么简单,我不确定您为什么不这样做。

1)
shelve
pickle数据,因此您无法使用它以文本格式保存数据2)它使用数据库存储数据,因此,您绝对不能使用
shelve
以普通格式存储数据。您需要的是一个所谓的逗号分隔值文件,也就是我不想要的文件。我对问题进行了编辑,使之更清楚。数据库正在存储对象,每个对象都是一个StudentRecord。如何为这些对象指定键值,以避免每个对象的键值重叠?
{
    'Bob': {'assignment': 'Test1', grade: 99},
    'John': {'assignment': 'Worksheet', grade: 39}
}