当不需要使用关系数据库解决方案时,Python标准库中的货架模块是用于持久数据存储的简单而有效的工具。在此模块中定义的架子对象是类似字典的对象,它永久存储在磁盘文件中。这会在类似于UNIX的系统上创建类似于dbm数据库的文件。在此特殊字典对象中,只能将字符串数据类型用作键,而任何可腌制的对象都可以用作值。
搁置模块定义了三个类,如下所示:
| 序号 | 模块与说明 |
|---|---|
| 1 | 架子 这是架子实施的基类。用类字典对象初始化。 |
| 2 | BsdDbShelf 这是Shelf类的子类。该字典对象传递给它的构造必须支持 first(),next(),previous(),last()和set_location()定位方法。 |
| 3 | DbfilenameShelf 这也是Shelf的子类,但接受文件名作为其构造函数而不是dict对象的参数。 |
形成Shelf对象的最简单方法是使用open()在shelve模块中定义的函数,该函数返回DbfilenameShelf对象。
open(filename, flag = 'c', protocol=None, writeback = False)
filename参数分配给创建的数据库。
对于读/写访问,标志参数的默认值为'c'。其他标志是“ w”(仅写)“ r”(只读)和“ n”(读/写新功能)
协议参数表示pickle协议写回参数默认为false。如果设置为true,则将缓存访问的条目。因此,每次访问呼叫sync()和close()操作都可能很慢。
以下代码创建一个数据库并将字典条目存储在其中。
import shelve
s = shelve.open("test")
s['name'] = "Ajay"
s['age'] = 23
s['marks'] = 75
s.close()这将在当前目录中创建test.dir文件,并以哈希形式存储键值数据。Shelf对象具有以下可用方法-
| 序号 | 方法与说明 |
|---|---|
| 1 | close() 同步并关闭持久字典对象。 |
| 2 | sync() 如果在写回设置为True的情况下打开了架子,则写回缓存中的所有条目。 |
| 3 | get() 返回与键关联的值 |
| 4 | items() 元组列表–每个元组都是键值对 |
| 5 | keys() 架子钥匙列表 |
| 6 | pop() 删除指定的键并返回相应的值。 |
| 7 | update() 从另一个dict / iterable更新架子 |
| 8 | values() 货架值列表 |
访问货架中特定键的值。
>>> s=shelve.open('test')
>>> s['age']
23
>>> s['age']=25
>>> s.get('age')
25的items(),keys()而values()方法返回视图对象。
>>> list(s.items())
[('name', 'Ajay'), ('age', 25), ('marks', 75)]
>>> list(s.keys())
['name', 'age', 'marks']
>>> list(s.values())
['Ajay', 25, 75]从架子上删除键/值对
>>> s.pop('marks')
75
>>> list(s.items())
[('name', 'Ajay'), ('age', 25)]请注意,标记-75的键值对已被删除。
使用架子使用update()方法合并另一本词典的项目
>>> d={'salary':10000, 'designation':'manager'}
>>> s.update(d)
>>> list(s.items())
[('name', 'Ajay'), ('age', 25), ('salary', 10000), ('designation', 'manager')]在本文中,我们了解了搁架模块,该模块提供了用于存储持久性字典对象的便捷机制。