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中的exec、eval使用实例
Sep 23 Python
python根据时间生成mongodb的ObjectId的方法
Mar 13 Python
python实现在每个独立进程中运行一个函数的方法
Apr 23 Python
python实现的DES加密算法和3DES加密算法实例
Jun 03 Python
Python中字符串格式化str.format的详细介绍
Feb 17 Python
python 获取url中的参数列表实例
Dec 18 Python
利用python和百度地图API实现数据地图标注的方法
May 13 Python
python之mock模块基本使用方法详解
Jun 27 Python
python函数的作用域及关键字详解
Aug 20 Python
python中for循环变量作用域及用法详解
Nov 05 Python
python如何调用java类
Jul 05 Python
Python基于argparse与ConfigParser库进行入参解析与ini parser
Feb 02 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
雄兵连:第三季确定会出,不过时间未定,鹤熙是第三季的主角!
2020/03/13 国漫
PHP 的几个配置文件函数
2006/12/21 PHP
php简单开启gzip压缩方法(zlib.output_compression)
2013/04/13 PHP
php遍历目录方法小结
2015/03/10 PHP
浅谈使用PHP开发微信支付的流程
2015/10/04 PHP
简单谈谈PHP中的include、include_once、require以及require_once语句
2016/04/23 PHP
分享一个漂亮的php验证码类
2016/09/29 PHP
JavaScript中的一些定位属性[图解]
2010/07/14 Javascript
前端面试题及答案整理(二)
2016/08/26 Javascript
微信小程序 自己制作小组件实例详解
2016/12/22 Javascript
js实现随机点名小功能
2017/08/17 Javascript
Angular2里获取(input file)上传文件的内容的方法
2017/09/05 Javascript
详解基于 Nuxt 的 Vue.js 服务端渲染实践
2017/10/24 Javascript
Vue三种常用传值示例(父传子、子传父、非父子)
2018/07/24 Javascript
微信小程序实现左右列表联动
2020/05/19 Javascript
详解vue几种主动刷新的方法总结
2019/02/19 Javascript
vue 组件内获取actions的response方式
2019/11/08 Javascript
使用JS实现动态时钟
2020/03/12 Javascript
vue通过v-html指令渲染的富文本无法修改样式的解决方案
2020/05/20 Javascript
在VUE style中使用data中的变量的方法
2020/06/19 Javascript
[00:33]DOTA2上海特级锦标赛 CDEC战队宣传片
2016/03/04 DOTA
Python FTP操作类代码分享
2014/05/13 Python
Python Tkinter基础控件用法
2014/09/03 Python
在Django的模型中添加自定义方法的示例
2015/07/21 Python
Html5新特性用canvas标签画多条直线附效果截图
2014/06/30 HTML / CSS
expedia比利时:预订航班+酒店并省钱
2018/07/13 全球购物
娱乐地球:Entertainment Earth
2020/01/08 全球购物
英国家具、照明、家居用品网上商店:Wayfair.co.uk
2020/02/13 全球购物
城市轨道专业个人求职信范文
2013/09/23 职场文书
应用心理学个人求职信范文
2013/12/11 职场文书
项目建议书范文
2014/05/12 职场文书
会议主持词开场白
2015/05/28 职场文书
催款函范本大全
2015/06/24 职场文书
2015年公司中秋节致辞
2015/07/31 职场文书
助学金申请书该怎么写?
2019/07/16 职场文书
Docker 镜像介绍以及commit相关操作
2022/04/13 Servers