创建一个新的架子

使用搁置的最简单方法是通过 DbfilenameShelf 类。它使用 anydbm 来存储数据。你可以直接使用该类,或者只需调用 shelve.open()

import shelve

s = shelve.open('test_shelf.db')
try:
    s['key1'] = { 'int': 10, 'float':9.5, 'string':'Sample data' }
finally:
    s.close()

要再次访问数据,请打开书架并像字典一样使用它:

    import shelve
    
    s = shelve.open('test_shelf.db')
    try:
        existing = s['key1']
    finally:
        s.close()

print existing

如果你运行两个示例脚本,你应该看到:

$ python shelve_create.py
$ python shelve_existing.py

{'int': 10, 'float': 9.5, 'string': 'Sample data'}

DBM 模块不支持多个应用程序同时写入同一个数据库。如果你知道你的客户端不会修改架子,你可以告诉 shelve 以只读方式打开数据库。

import shelve

s = shelve.open('test_shelf.db', flag='r')
try:
    existing = s['key1']
finally:
    s.close()

print existing

如果程序在以只读方式打开时尝试修改数据库,则会生成访问错误异常。异常类型取决于创建数据库时 anydbm 选择的数据库模块。