返回介绍

在 shelve 数据库中存储对象

发布于 2024-01-29 22:24:15 字数 1107 浏览 0 评论 0 收藏 0

Pickle和shelve都是高级话题,并且我们不会在这里介绍其所有的细节。可以在标准库手册中找到更多相关的内容,或者像Programming Python这样专注于应用程序的图书中也有介绍。用Python说明它们比用语言文字说明要简单得多,因此,让我们来看一些代码。

让我们编写一个新的脚本,把类的对象存储到shelve中。在文本编辑器中,打开一个名为makedb.py的新文件。既然这是一个新文件,我们需要导入类以便创建一些实例来存储。我们像前面一样在交互提示模式下使用from载入一个类,但实际上,和函数与其他变量一样,有两种方式从一个文件载入一个类(类名和其他的名字一样也是变量,并且没什么特别的):

我们使用from载入脚本中,只是因为它便于录入。在新的脚本中,复制或重新录入这些代码来创建类的实例,从而可以有些内容来存储(这是一个简单的示例程序,因此,我们在这里不考虑测试代码的冗余性)。一旦有了一些实例,将它们存储到shelve中简直是小菜一碟。我们直接导入shelve模块,用一个外部文件名打开一个新的shelve,把对象赋给shelve中的键,当我们操作完毕之后关闭这个shelve,因为已经做过了修改:

注意我们是如何把对象的名字用做键,从而把它们赋给shelve的。这么做只是为了方便,在shelve中,键可以是任何的字符串,包括我们使用诸如处理ID和时间戳(可以在os中和time标准库模块中使用)的工具所创建的唯一的字符串。唯一的规则是,键必须是字符串并且应该是唯一的,这样,我们就可以针对每个键只存储一个对象(尽管对象可以是包含很多对象的一个列表或字典)。然而,我们存储在键之下的值可以是几乎任何类型的Python对象:像字符串、列表和字典这样的内置对象,用户定义的类实例,以及所有这些嵌套式的组合。就是这些,如果这段脚本运行的时候没有输出,意味着它可能有效;我们没有打印任何内容,只是创建和存储对象:

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文