第七章:数据持久存储与交换-shelve:对象的持久存储-创建一个新shelf

7.2 shelve:对象的持久存储
不需要关系数据库时,可以用shelve模块作为持久存储Python对象的一个简单的选择。类似于字典,shelf按键访问。值将被腌制并写至由dbm创建和管理的数据库。

7.2.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以只读方式打开数据库。

import dbm
import shelve

with shelve.open('test_shelf.db',flag='r') as s:
    print('Existing:',s['key1'])
    try:
        s['key1'] = 'new value'
    except dbm.error as err:
        print('ERROR: {}'.format(err))

如果数据库作为只读数据源打开,并且程序试图修改数据库,那么便会生成一个访问错误异常。具体的异常类型取决于创建数据库时dbm选择的数据库模块。
Linux下运行结果:
在这里插入图片描述
Windows下运行结果不同:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43193719/article/details/88826501