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 ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
Jun 10 Python
总结用Pdb库调试Python的方式及常用的命令
Aug 18 Python
Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例
Dec 12 Python
Python批量提取PDF文件中文本的脚本
Mar 14 Python
django如何连接已存在数据的数据库
Aug 14 Python
利用Python将数值型特征进行离散化操作的方法
Nov 06 Python
Django框架实现的普通登录案例【使用POST方法】
May 15 Python
python3操作注册表的方法(Url protocol)
Feb 05 Python
python cookie反爬处理的实现
Nov 01 Python
pytorch 实现L2和L1正则化regularization的操作
Mar 03 Python
OpenCV全景图像拼接的实现示例
Jun 05 Python
python中出现invalid syntax报错的几种原因分析
Feb 12 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
discuz7 phpMysql操作类
2009/06/21 PHP
php 自写函数代码 获取关键字 去超链接
2010/02/08 PHP
解析php中获取url与物理路径的总结
2013/06/21 PHP
PHP中fwrite与file_put_contents性能测试代码
2013/08/02 PHP
phpmyadmin配置文件现在需要绝密的短密码(blowfish_secret)的2种解决方法
2014/05/07 PHP
PHP实现图片旋转效果实例代码
2014/10/01 PHP
php实现检查文章是否被百度收录
2015/01/27 PHP
thinkPHP数据查询常用方法总结【select,find,getField,query】
2017/03/15 PHP
用JS剩余字数计算的代码
2008/07/03 Javascript
javascript 的Document属性和方法集合
2010/01/25 Javascript
基于JQuery实现CheckBox全选全不选
2011/06/27 Javascript
Js中获取frames中的元素示例代码
2013/07/30 Javascript
javascript和jquery修改a标签的href属性
2013/12/16 Javascript
JQEasy-ui在IE9以下版本中二次加载的问题分析及处理方法
2014/06/23 Javascript
使用纯javascript实现经典扫雷游戏
2015/04/23 Javascript
js代码实现无缝滚动(文字和图片)
2015/08/20 Javascript
js点击按钮实现带遮罩层的弹出视频效果
2015/12/19 Javascript
AngularJs 弹出模态框(model)
2016/04/07 Javascript
AngularJS 模型详细介绍及实例代码
2016/07/27 Javascript
es6在react中的应用代码解析
2017/11/08 Javascript
详解react-refetch的使用小例子
2019/02/15 Javascript
JS div匀速移动动画与变速移动动画代码实例
2019/03/26 Javascript
layer设置maxWidth及maxHeight解决方案
2019/07/26 Javascript
解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题
2020/07/27 Javascript
利用js实现简易红绿灯
2020/10/15 Javascript
利用Python破解验证码实例详解
2016/12/08 Python
分析python切片原理和方法
2017/12/19 Python
Python3 无重复字符的最长子串的实现
2019/10/08 Python
python查询MySQL将数据写入Excel
2020/10/29 Python
西班牙香水和化妆品购物网站:Arenal Perfumerías
2019/03/01 全球购物
string = null 和string = ''的区别
2013/04/28 面试题
毕业求职自荐信格式是什么
2013/11/19 职场文书
卫校护理专业毕业生求职信
2013/11/26 职场文书
优秀党员自我评价范文
2014/09/15 职场文书
springboot 启动如何排除某些bean的注入
2021/08/02 Java/Android
python index() 与 rindex() 方法的使用示例详解
2022/12/24 Python