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 Socket编程入门教程
Jul 11 Python
python斐波那契数列的计算方法
Sep 27 Python
pygame游戏之旅 添加游戏暂停功能
Nov 21 Python
对python制作自己的数据集实例讲解
Dec 12 Python
75条笑死人的知乎神回复,用60行代码就爬完了
May 06 Python
Python3将数据保存为txt文件的方法
Sep 12 Python
Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作示例
Oct 14 Python
python3中rank函数的用法
Nov 27 Python
Python turtle画图库&&画姓名实例
Jan 19 Python
python和php哪个容易学
Jun 19 Python
python爬虫调度器用法及实例代码
Nov 30 Python
python 邮件检测工具mmpi的使用
Jan 04 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简洁函数(PHP简单明了函数语法)
2012/06/10 PHP
php图像处理函数大全(推荐收藏)
2013/07/11 PHP
php实现比较全的数据库操作类
2015/06/18 PHP
PHP中读取文件的几个方法总结(推荐)
2016/06/03 PHP
jquery鼠标放上去显示悬浮层即弹出定位的div层
2014/04/25 Javascript
jQuery/CSS3图片特效插件整理推荐
2014/12/07 Javascript
node.js中的dns.getServers方法使用说明
2014/12/08 Javascript
javascript实现带节日和农历的日历特效
2015/02/01 Javascript
jQuery实现的导航下拉菜单效果
2016/07/04 Javascript
KnockoutJS 3.X API 第四章之数据控制流component绑定
2016/10/10 Javascript
浅谈Nodejs中的作用域问题
2016/12/26 NodeJs
jQuery文字轮播特效
2017/02/12 Javascript
JavaScript实现学生在线做题计时器功能
2018/12/05 Javascript
如何为vuex实现带参数的 getter和state.commit
2019/01/04 Javascript
JS实现扫码枪扫描二维码功能
2020/01/03 Javascript
[33:23]Secret vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Ubuntu下使用python读取doc和docx文档的内容方法
2018/05/08 Python
Python实现的txt文件去重功能示例
2018/07/07 Python
pyqt5 实现多窗口跳转的方法
2019/06/19 Python
基于torch.where和布尔索引的速度比较
2020/01/02 Python
薇诺娜官方网上商城:专注敏感肌肤
2017/05/25 全球购物
Java如何支持I18N?
2016/10/31 面试题
后勤工作职责
2013/12/22 职场文书
大学生励志演讲稿
2014/04/25 职场文书
共产党员公开承诺践诺书
2014/05/28 职场文书
新闻发布会策划方案
2014/06/12 职场文书
大学生党员批评与自我批评范文
2014/10/14 职场文书
工程部岗位职责
2015/02/10 职场文书
2015年派出所民警工作总结
2015/04/24 职场文书
埃及王子观后感
2015/06/16 职场文书
2016年领导干部正风肃纪心得体会
2015/10/09 职场文书
2016拓展训练心得体会范文
2016/01/12 职场文书
Python如何使用logging为Flask增加logid
2021/03/30 Python
SQL注入的实现以及防范示例详解
2021/06/02 MySQL
用python基于appium模块开发一个自动收取能量的小助手
2021/09/25 Python
vue项目支付功能代码详解
2022/02/18 Vue.js