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 相关文章推荐
Python3 入门教程 简单但比较不错
Nov 29 Python
给Python中的MySQLdb模块添加超时功能的教程
May 05 Python
Python常用的文件及文件路径、目录操作方法汇总介绍
May 21 Python
简单的python后台管理程序
Apr 13 Python
利用matplotlib+numpy绘制多种绘图的方法实例
May 03 Python
Python通过调用mysql存储过程实现更新数据功能示例
Apr 03 Python
通过python的matplotlib包将Tensorflow数据进行可视化的方法
Jan 09 Python
opencv导入头文件时报错#include的解决方法
Jul 31 Python
Python3 使用map()批量的转换数据类型,如str转float的实现
Nov 29 Python
Python @property装饰器原理解析
Jan 22 Python
Anconda环境下Vscode安装Python的方法详解
Mar 29 Python
浅谈怎么给Python添加类型标注
Jun 08 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操作数组相关函数
2011/02/03 PHP
phpmailer简单发送邮件的方法(附phpmailer源码下载)
2016/06/13 PHP
PHP中的self关键字详解
2019/06/23 PHP
js 利用className得到对象的实现代码
2011/11/15 Javascript
用html5 js实现点击一个按钮达到浏览器全屏效果
2014/05/28 Javascript
jQuery的animate函数实现图文切换动画效果
2015/05/03 Javascript
JQuery复制DOM节点的方法
2015/06/11 Javascript
JavaScript6 let 新语法优势介绍
2016/07/15 Javascript
移动端手指放大缩小插件与js源码
2017/05/22 Javascript
jq源码解析之绑在$,jQuery上面的方法(实例讲解)
2017/10/13 jQuery
利用HBuilder打包前端开发webapp为apk的方法
2017/11/13 Javascript
Node Puppeteer图像识别实现百度指数爬虫的示例
2018/02/22 Javascript
JavaScript引用类型Date常见用法实例分析
2018/08/08 Javascript
图片文字识别(OCR)插件Ocrad.js教程
2018/11/26 Javascript
原生js实现日历效果
2020/03/02 Javascript
Vue+element+cookie记住密码功能的简单实现方法
2020/09/20 Javascript
详解node.js创建一个web服务器(Server)的详细步骤
2021/01/15 Javascript
Python模块学习 filecmp 文件比较
2012/08/27 Python
python利用datetime模块计算时间差
2015/08/04 Python
使用Python的Django框架结合jQuery实现AJAX购物车页面
2016/04/11 Python
pandas修改DataFrame列名的实现方法
2019/02/22 Python
快速排序的四种python实现(推荐)
2019/04/03 Python
python实现弹跳小球
2019/05/13 Python
python保存字典和读取字典的实例代码
2019/07/07 Python
django之静态文件 django 2.0 在网页中显示图片的例子
2019/07/28 Python
pytorch的梯度计算以及backward方法详解
2020/01/10 Python
python 解决mysql where in 对列表(list,,array)问题
2020/06/06 Python
CSS3 网页下拉菜单代码解释 中文翻译
2010/02/27 HTML / CSS
分享30个新鲜的CSS3打造的精美绚丽效果(附演示下载)
2012/12/28 HTML / CSS
Edwaybuy西班牙:小米在线商店
2019/12/04 全球购物
Linux如何修改文件和文件夹的权限
2012/06/27 面试题
村官学习十八大感想
2014/01/15 职场文书
2014年度考核工作总结
2014/12/24 职场文书
安徽导游词
2015/02/12 职场文书
浅谈Python数学建模之数据导入
2021/06/23 Python
python如何读取和存储dict()与.json格式文件
2022/06/25 Python