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 文件操作删除某行的实例
Sep 04 Python
Python实现二维数组按照某行或列排序的方法【numpy lexsort】
Sep 22 Python
Python如何快速上手? 快速掌握一门新语言的方法
Nov 14 Python
opencv实现静态手势识别 opencv实现剪刀石头布游戏
Jan 22 Python
python selenium登录豆瓣网过程解析
Aug 10 Python
TensorFlow 显存使用机制详解
Feb 03 Python
python字符串下标与切片及使用方法
Feb 13 Python
Python3 hashlib密码散列算法原理详解
Mar 30 Python
OpenCV图片漫画效果的实现示例
Aug 18 Python
OpenCV灰度化之后图片为绿色的解决
Dec 01 Python
详解numpy1.19.4与python3.9版本冲突解决
Dec 15 Python
python基础之类方法和静态方法
Oct 24 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缩放图片(根据宽高的等比例缩放)实例介绍
2013/06/09 PHP
单点登录 Ucenter示例分析
2013/10/29 PHP
Prototype使用指南之selector.js
2007/01/10 Javascript
jQuery EasyUI 开源插件套装 完全替代ExtJS
2010/03/24 Javascript
jQuery学习笔记之Helloworld
2010/12/22 Javascript
基于jquery的$.ajax async使用
2011/10/19 Javascript
node.js中的querystring.stringify方法使用说明
2014/12/10 Javascript
js对象的复制继承实例
2015/01/10 Javascript
jquery仅用6行代码实现滑动门效果
2015/09/07 Javascript
什么是JavaScript中的结果值?
2016/10/08 Javascript
详解nodejs微信jssdk后端接口
2017/05/25 NodeJs
JS和Canvas实现图片的预览压缩和上传功能
2018/03/30 Javascript
vue中如何实现后台管理系统的权限控制的方法示例
2018/09/19 Javascript
微信小程序如何访问公众号文章
2019/07/08 Javascript
BootStrap前端框架使用方法详解
2020/02/26 Javascript
[02:05]2014DOTA2西雅图邀请赛 专访啸天mik夫妻档
2014/07/08 DOTA
[16:56]heroes英雄教学 司夜刺客
2014/09/18 DOTA
[50:50]完美世界DOTA2联赛PWL S3 Galaxy Racer vs Phoenix 第一场 12.10
2020/12/13 DOTA
Python深入学习之上下文管理器
2014/08/31 Python
numpy中索引和切片详解
2017/12/15 Python
Python进阶之递归函数的用法及其示例
2018/01/31 Python
Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
2018/03/15 Python
python调用百度语音识别api
2018/08/30 Python
实例讲解python中的协程
2018/10/08 Python
python 读取dicom文件,生成info.txt和raw文件的方法
2019/01/24 Python
python实现日志按天分割
2019/07/22 Python
简单易懂Pytorch实战实例VGG深度网络
2019/08/27 Python
python实现复制文件到指定目录
2019/10/16 Python
GafasWorld哥伦比亚:网上购买眼镜
2017/11/28 全球购物
大学生毕业自我鉴定范文
2013/11/03 职场文书
汽车技术服务与营销专业推荐信
2013/11/29 职场文书
岗位职责风险点
2014/03/12 职场文书
高中校园广播稿3篇
2014/09/29 职场文书
2016高一新生军训心得体会
2016/01/11 职场文书
Python如何导出导入所有依赖包详解
2021/06/08 Python
python开发飞机大战游戏
2021/07/15 Python