sqlite3(或任何其他良好的关系数据库,但sqlite
Python随附,并且在处理如此少量的数据时更方便)似乎是完成任务的正确方法。如果您不想学习sql,SQLAlchemy是关系DB上的流行“包装器”,可以这么说,它使您可以在选择的几种不同抽象级别中的任何一个上对它们进行处理。
而且“在内存中完成所有操作”根本没有问题(请注意,这很 ,因为您将不必要地支付从程序的每次运行中更持久的位置读取所有数据的开销,同时保持磁盘文件上的数据库可以节省您的开销- 但这是另一个问题;-)。只需随处打开sqlite数据库':memory:'
即可-一个全新的新关系数据库完全位于内存中(仅在处理期间),而过程 没有磁盘。所以,为什么不呢?-)
就我个人而言,我将直接使用sql来执行此任务- 它使我可以很好地控制正在发生的事情,并可以轻松地添加或删除索引以调整性能,等等。您将使用三个表:一个Books
表(主键) ID,其他字段(例如Title&c),Authors
表(主键ID,其他字段,例如Name&c)和“多对多关系表”,比如说BookAuthors
,只有两个字段BookID
和AuthorID
,每个字段一个记录作者与书本的连接。
该BookAuthors
表的两个字段分别称为“书本”和“作者”的ID字段,即所谓的“外键”,您可以使用来定义它们,ON DELETE CASCADE
以便引用被删除的书本或作者的记录自动依次删除-一个高语义级别的示例,即使是“裸” sql也可以使您工作,而其他任何现有数据结构都无法接近匹配。