Python3中shelve对象如何实现数据持久化存储原理分析?
- 内容介绍
- 文章标签
- 相关推荐
本文共计808个文字,预计阅读时间需要4分钟。
shelve模块提供了一种简单的对象持久化方法,无需数据库即可存储Python对象。类似字典,shelve通过键访问数据。值将被pickle并写入由dbm创建和管理的数据库中。
1.shelve对象的持久存储
不需要关系数据库时,可以用shelve模块作为持久存储Python对象的一个简单的选择。类似于字典,shelf按键访问。值将被pickled并写至由dbm创建和管理的数据库。
1.1 创建一个新shelf
使用shelve最简单的方法就是利用DbfilenameShelf类。它使用dbm存储数据。这个类可以直接使用,也可以通过调用shelve.open()来使用。
import shelve with shelve.open('test_shelf.db') as s: s['key1'] = { 'int': 10, 'float': 9.5, 'string': 'Sample data', }
再次访问这个数据,可以打开shelf,并像字典一样使用它。
import shelve with shelve.open('test_shelf.db') as s: existing = s['key1'] print(existing)
运行这两个示例脚本会生成以下输出。
dbm模块不支持多个应用同时写同一个数据库,不过它支持并发的只读客户。如果一个客户没有修改shelf,则可以通过传入flag='r'来告诉shelve以只读方式打开数据库。
本文共计808个文字,预计阅读时间需要4分钟。
shelve模块提供了一种简单的对象持久化方法,无需数据库即可存储Python对象。类似字典,shelve通过键访问数据。值将被pickle并写入由dbm创建和管理的数据库中。
1.shelve对象的持久存储
不需要关系数据库时,可以用shelve模块作为持久存储Python对象的一个简单的选择。类似于字典,shelf按键访问。值将被pickled并写至由dbm创建和管理的数据库。
1.1 创建一个新shelf
使用shelve最简单的方法就是利用DbfilenameShelf类。它使用dbm存储数据。这个类可以直接使用,也可以通过调用shelve.open()来使用。
import shelve with shelve.open('test_shelf.db') as s: s['key1'] = { 'int': 10, 'float': 9.5, 'string': 'Sample data', }
再次访问这个数据,可以打开shelf,并像字典一样使用它。
import shelve with shelve.open('test_shelf.db') as s: existing = s['key1'] print(existing)
运行这两个示例脚本会生成以下输出。
dbm模块不支持多个应用同时写同一个数据库,不过它支持并发的只读客户。如果一个客户没有修改shelf,则可以通过传入flag='r'来告诉shelve以只读方式打开数据库。

