Python Shelve模块对象持久化使用指南
本文详解Python中Shelve模块的对象持久化用法。涵盖如何打开数据库、分配键值对、读写数据及关闭文件。重点强调多数据库操作时的内存管理,避免因未关闭文件导致的资源消耗问题,提供完整的代码示例与注意事项。
Shelve是Python中一个用于实现对象持久化的强大模块。在使用该模块存储对象时,必须为每个对象指定一个唯一的键以识别其值。通过这种键值对机制,Shelve文件实际上充当了一个数据库,允许用户随时访问其中存储的任何对象。
Python中Shelve模块的使用示例
要使用Shelve存储对象,首先需要导入该模块,然后按照以下方式为对象分配值:
import shelve database = shelve.open(filename.suffix) object = Object() database['key'] = object
例如,若需保存股票数据,可参考以下代码调整:
import shelve
stockvalues_db = shelve.open('stockvalues.db')
object_ibm = Values.ibm()
stockvalues_db['ibm'] = object_ibm
object_vmw = Values.vmw()
stockvalues_db['vmw'] = object_vmw
object_db = Values.db()
stockvalues_db['db'] = object_db
此时“stock values.db”数据库已处于打开状态,无需再次手动打开。你可以同时打开多个数据库,对每个数据库进行写入操作,并在程序终止时由Python自动关闭它们。例如,你可以为每个股票代码保留一个单独的名称数据库,并将以下内容追加到前面的代码中:
## assuming shelve is already imported
stocknames_db = shelve.open('stocknames.db')
objectname_ibm = Names.ibm()
stocknames_db['ibm'] = objectname_ibm
objectname_vmw = Names.vmw()
stocknames_db['vmw'] = objectname_vmw
objectname_db = Names.db()
stocknames_db['db'] = objectname_db
需要注意的是,数据库文件的名称或后缀的任何更改都会被视为不同的文件,从而构成一个全新的数据库。
这将生成包含给定值的第二个数据库文件。与大多数自定义格式的文件不同,Shelve生成的数据库以二进制形式保存。
数据写入文件后,即可随时调用。若要在后续会话中恢复数据,需重新打开该文件;若在同一个会话中,直接调用该值即可。Shelve数据库文件默认以读写模式打开。以下是实现此操作的基本语法:
import shelve database = shelve.open(filename.suffix) object = database['key']
因此,前述示例中的读取操作将显示为:
import shelve
stockname_file = shelve.open('stocknames.db')
stockname_ibm = stockname_file['ibm']
stockname_db = stockname_file['db']
Shelve使用注意事项
务必注意,在显式关闭数据库之前(或直到程序终止),数据库将保持打开状态。因此,如果你编写的是规模较大的程序,必须在使用完毕后关闭数据库。否则,整个数据库(而不仅仅是你需要的值)都会驻留在内存中,从而消耗大量计算资源。
要关闭Shelve文件,请使用以下语法:
database.close()
如果将上述所有代码示例合并到一个程序中,我们将打开两个数据库文件并消耗内存。因此,在读取上一个示例中的股票名称后,你可以依次关闭每个数据库,如下所示:
stockvalues_db.close() stocknames_db.close() stockname_file.close()
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









