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的MongoDB模块PyMongo操作方法集锦
Jan 05 Python
用python实现简单EXCEL数据统计的实例
Jan 24 Python
使用python实现生成用户信息
Mar 20 Python
Python基础语言学习笔记总结(精华)
Nov 14 Python
Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度
Apr 09 Python
Python中循环引用(import)失败的解决方法
Apr 22 Python
python selenium firefox使用详解
Feb 26 Python
Python字典遍历操作实例小结
Mar 05 Python
python flask 如何修改默认端口号的方法步骤
Jul 12 Python
pycharm快捷键汇总
Feb 14 Python
Python中bisect的用法及示例详解
Jul 20 Python
如何用用Python将地址标记在地图上
Feb 07 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
PHP session常见问题集锦及解决办法总结
2007/03/18 PHP
PHP flock 文件锁详细介绍
2012/12/29 PHP
解决Laravel blade模板转义html标签的问题
2019/09/03 PHP
php面向对象重点知识分享
2019/09/27 PHP
laravel http 自定义公共验证和响应的方法
2019/09/29 PHP
php 多继承的几种常见实现方法示例
2019/11/18 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
2020/02/21 PHP
Jquery插件写法笔记整理
2012/09/06 Javascript
一些老手都不一定知道的JavaScript技巧
2014/05/06 Javascript
jQuery控制TR显示隐藏的几种方法
2014/06/18 Javascript
Nodejs极简入门教程(二):定时器
2014/10/25 NodeJs
javascript中数组array及string的方法总结
2014/11/28 Javascript
jQuery动态效果显示人物结构关系图的方法
2015/05/07 Javascript
浅谈addEventListener和attachEvent的区别
2016/07/14 Javascript
JavaScript数值千分位格式化的两种简单实现方法
2016/08/01 Javascript
JS实现的Unicode编码转换操作示例
2017/04/28 Javascript
JS简单判断滚动条的滚动方向实现方法
2017/04/28 Javascript
JavaScript实现无刷新上传预览图片功能
2017/08/02 Javascript
微信小程序自定义组件之可清除的input组件
2018/07/17 Javascript
Easyui 去除jquery-easui tab页div自带滚动条的方法
2019/05/10 jQuery
详解webpack打包vue项目之后生成的dist文件该怎么启动运行
2019/09/06 Javascript
React Hooks 实现和由来以及解决的问题详解
2020/01/17 Javascript
JS实现audio音频剪裁剪切复制播放与上传(步骤详解)
2020/07/28 Javascript
详解Python编程中对Monkey Patch猴子补丁开发方式的运用
2016/05/27 Python
Python实现个人微信号自动监控告警的示例
2019/07/03 Python
如何在Cloud Studio上执行Python代码?
2019/08/09 Python
python实现图片转换成素描和漫画格式
2020/08/19 Python
HTML5注册表单的自动聚焦与占位文本示例代码
2013/07/19 HTML / CSS
澳大利亚第一的设计师礼服租赁网站:GlamCorner
2017/08/13 全球购物
出国留学计划书
2014/04/27 职场文书
教师求职信范文
2014/05/24 职场文书
工商管理专业毕业生自我鉴定2014
2014/10/04 职场文书
Opencv中cv2.floodFill算法的使用
2021/06/18 Python
Python pandas之求和运算和非空值个数统计
2021/08/07 Python
详解Redis的三种常用的缓存读写策略步骤
2022/05/06 Redis
浅析JavaScript中的变量提升
2022/06/01 Javascript