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 29 Python
Python中__name__的使用实例
Apr 14 Python
python PIL模块与随机生成中文验证码
Feb 27 Python
Windows下Python2与Python3两个版本共存的方法详解
Feb 12 Python
JSONLINT:python的json数据验证库实例解析
Nov 28 Python
Python决策树分类算法学习
Dec 22 Python
Python模块搜索路径代码详解
Jan 29 Python
pyqt5 实现 下拉菜单 + 打开文件的示例代码
Jun 20 Python
python实现从wind导入数据
Dec 03 Python
Python计算指定日期是今年的第几天(三种方法)
Mar 26 Python
Python如何给你的程序做性能测试
Jul 29 Python
Python如何读写CSV文件
Aug 13 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 正则学习实例
2008/07/30 PHP
php的chr和ord函数实现字符加减乘除运算实现代码
2011/12/05 PHP
基于php设计模式中单例模式的应用分析
2013/05/15 PHP
php使用多个进程同时控制文件读写示例
2014/02/28 PHP
php中判断数组相等的方法以及数组运算符介绍
2015/03/30 PHP
PHP中trim()函数简单使用指南
2015/04/16 PHP
PHP的mysqli_stmt_init()函数讲解
2019/01/24 PHP
YII2框架中使用RBAC对模块,控制器,方法的权限控制及规则的使用示例
2020/03/18 PHP
jquery 如何动态添加、删除class样式方法介绍
2012/11/07 Javascript
node.js中的console.timeEnd方法使用说明
2014/12/09 Javascript
javascript实现在网页任意处点左键弹出隐藏菜单的方法
2015/05/13 Javascript
纯js代码制作的网页时钟特效【附实例】
2016/03/30 Javascript
AngularJS过滤器详解及示例代码
2016/08/16 Javascript
详解jQuery插件开发方式
2016/11/22 Javascript
nodejs操作mongodb的填删改查模块的制作及引入实例
2018/01/02 NodeJs
小程序实现按下录音松开识别语音
2019/11/22 Javascript
node.js中npm包管理工具用法分析
2020/02/14 Javascript
Python中正则表达式的用法实例汇总
2014/08/18 Python
python按行读取文件,去掉每行的换行符\n的实例
2018/04/19 Python
Python爬取商家联系电话以及各种数据的方法
2018/11/10 Python
Python的matplotlib绘图如何修改背景颜色的实现
2019/07/16 Python
python绘制分布折线图的示例
2020/09/24 Python
NBA欧洲商店(西班牙):NBA Europe Store ES
2019/04/16 全球购物
电气工程及其自动化自我评价四篇
2013/09/24 职场文书
入党积极分子介绍信
2014/01/17 职场文书
物业保安员岗位职责制度
2014/01/30 职场文书
护士岗前培训自我评鉴
2014/02/28 职场文书
2014三八妇女节活动总结范文四篇
2014/03/09 职场文书
我的职业生涯规划:打造自己的运动帝国
2014/09/18 职场文书
查摆问题自查报告范文
2014/10/13 职场文书
财务审计整改报告
2014/11/06 职场文书
单位介绍信格式
2015/01/31 职场文书
准备去美国留学,那么大学申请文书应该怎么写?
2019/08/12 职场文书
Python中Permission denied的解决方案
2021/04/02 Python
利用Pycharm连接服务器的全过程记录
2021/07/01 Python
一文了解JavaScript用Element Traversal新属性遍历子元素
2021/11/27 Javascript