Python使用Shelve保存对象方法总结


Posted in Python onJanuary 28, 2019

Shelve是一个功能强大的Python模块,用于对象持久性。搁置对象时,必须指定一个用于识别对象值的键。通过这种方式,搁置文件成为存储值的数据库,其中任何一个都可以随时访问。

Python中搁置的示例代码

要搁置对象,首先导入模块,然后按如下方式分配对象值:

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

请注意,数据库文件的名称或后缀的任何更改都构成不同的文件,因此构成不同的数据库。

结果是包含给定值的第二个数据库文件。与大多数以自定格式编写的文件不同,搁置的数据库以二进制形式保存。

将数据写入文件后,可以随时调用。如果要在以后的会话中还原数据,请重新打开该文件。如果它是同一个会话,只需调用该值; 搁置数据库文件以读写模式打开。以下是实现此目的的基本语法:

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']

搁置的考虑因素

请务必注意,在关闭数据库之前(或直到程序终止),数据库将保持打开状态。因此,如果您正在编写任何大小的程序,则需要在使用它之后关闭数据库。否则,整个数据库(不仅仅是您想要的值)位于内存中并消耗计算资源。

要关闭搁置文件,请使用以下语法:

database.close()

如果上面的所有代码示例都合并到一个程序中,那么我们将打开两个数据库文件并消耗内存。因此,在阅读上一个示例中的股票名称之后,您可以依次关闭每个数据库,如下所示:

stockvalues_db.close()
stocknames_db.close()
stockname_file.close()
Python 相关文章推荐
Python 性能优化技巧总结
Nov 01 Python
深入理解NumPy简明教程---数组1
Dec 17 Python
好的Python培训机构应该具备哪些条件
May 23 Python
Python关于excel和shp的使用在matplotlib
Jan 03 Python
Python3.4学习笔记之 idle 清屏扩展插件用法分析
Mar 01 Python
Python自动抢红包教程详解
Jun 11 Python
python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法
Jul 04 Python
Python 正则表达式 re.match/re.search/re.sub的使用解析
Jul 22 Python
django 通过URL访问上传的文件方法
Jul 28 Python
Python生命游戏实现原理及过程解析(附源代码)
Aug 01 Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
May 11 Python
Python中常见的导入方式总结
May 06 Python
Python理解递归的方法总结
Jan 28 #Python
代码详解django中数据库设置
Jan 28 #Python
Python控制键盘鼠标pynput的详细用法
Jan 28 #Python
用python 实现在不确定行数情况下多行输入方法
Jan 28 #Python
对python3中, print横向输出的方法详解
Jan 28 #Python
Python删除n行后的其他行方法
Jan 28 #Python
python 在指定范围内随机生成不重复的n个数实例
Jan 28 #Python
You might like
syphon 虹吸式咖啡冲泡冲煮倒水的得与失
2021/03/03 冲泡冲煮
用PHP进行MySQL删除记录操作代码
2008/06/07 PHP
由php的call_user_func传reference引发的思考
2010/07/23 PHP
php cookie名使用点号(句号)会被转换
2014/10/23 PHP
解决Laravel5.2 Auth认证退出失效的问题
2019/10/14 PHP
深入浅析安装PhpStorm并激活的步骤详解
2020/09/17 PHP
浏览器的JavaScript引擎的识别方法
2013/10/20 Javascript
关于js内存泄露的一个好例子
2013/12/09 Javascript
使用Node.js实现一个简单的FastCGI服务器实例
2014/06/09 Javascript
原生javascript实现图片按钮切换
2015/01/12 Javascript
JavaScript用构造函数如何获取变量的类型名
2016/12/23 Javascript
微信小程序授权获取用户详细信息openid的实例详解
2017/09/20 Javascript
jQuery进阶实践之利用最优雅的方式如何写ajax请求
2017/12/20 jQuery
vue项目中引入noVNC远程桌面的方法
2018/03/05 Javascript
react 中父组件与子组件双向绑定问题
2019/05/20 Javascript
webpack3升级到webpack4遇到问题总结
2019/09/30 Javascript
Node.js 深度调试方法解析
2020/07/28 Javascript
基于jQuery拖拽事件的封装
2020/11/29 jQuery
在Python中利用Into包整洁地进行数据迁移的教程
2015/03/30 Python
python判断字符串是否是json格式方法分享
2017/11/07 Python
NumPy.npy与pandas DataFrame的实例讲解
2018/07/09 Python
Python中低维数组填充高维数组的实现
2019/12/02 Python
python输入一个水仙花数(三位数) 输出百位十位个位实例
2020/05/03 Python
JupyterNotebook 输出窗口的显示效果调整实现
2020/09/22 Python
关于canvas绘制模糊问题的解决方法
2019/09/24 HTML / CSS
美国全球旅游运营商:Pacific Holidays
2018/06/18 全球购物
英国门把手公司:Door Handle Company
2019/05/12 全球购物
毕业生在校学习的自我评价分享
2013/10/08 职场文书
两则小学生的自我评价分享
2013/11/14 职场文书
毕业生就业自荐信
2013/12/04 职场文书
企业管理毕业生求职信范文
2014/03/07 职场文书
2014年环保局工作总结
2014/12/11 职场文书
五星红旗迎风飘扬观后感
2015/06/17 职场文书
公司酒会致辞
2015/07/30 职场文书
基于CSS3画一个iPhone
2021/04/21 HTML / CSS
php 文件上传至OSS及删除远程阿里云OSS文件
2021/07/04 PHP