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的Lambda函数与排序
Oct 25 Python
Python 登录网站详解及实例
Apr 11 Python
Python基于numpy灵活定义神经网络结构的方法
Aug 19 Python
python利用requests库模拟post请求时json的使用教程
Dec 07 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
Jan 23 Python
python判断一个对象是否可迭代的例子
Jul 22 Python
Python实现中值滤波去噪方式
Dec 18 Python
Python面向对象程序设计之类和对象、实例变量、类变量用法分析
Mar 23 Python
PyCharm MySQL可视化Database配置过程图解
Jun 09 Python
QT5 Designer 打不开的问题及解决方法
Aug 20 Python
python用分数表示矩阵的方法实例
Jan 11 Python
python爬虫破解字体加密案例详解
Mar 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
php类
2006/11/27 PHP
PHP学习笔记 (1) 环境配置与代码调试
2011/06/19 PHP
php随机显示指定文件夹下图片的方法
2015/07/13 PHP
thinkphp项目部署到Linux服务器上报错“模板不存在”如何解决
2016/04/27 PHP
php车辆违章查询数据示例
2016/10/14 PHP
有关PHP 中 config.m4 的探索
2020/08/26 PHP
用倒置滤镜把div倒置,再把table倒置。
2007/07/31 Javascript
Node.js实现Excel转JSON
2015/04/24 Javascript
JavaScript按值删除数组元素的方法
2015/04/24 Javascript
JS实现带鼠标效果的头像及文章列表代码
2015/09/27 Javascript
Jquery Easyui对话框组件Dialog使用详解(14)
2016/12/19 Javascript
JS实现随机颜色的3种方法与颜色格式的转化
2017/01/05 Javascript
Ajax异步文件上传与NodeJS express服务端处理
2017/04/01 NodeJs
微信小程序商城项目之商品属性分类(4)
2017/04/17 Javascript
vue-router路由与页面间导航实例解析
2017/11/07 Javascript
使用JS模拟锚点跳转的实例
2018/02/01 Javascript
微信小程序scroll-view锚点链接滚动跳转功能
2019/12/12 Javascript
[00:14]护身甲盾
2019/03/06 DOTA
Python-嵌套列表list的全面解析
2016/06/08 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
2019/01/23 Python
自学python用什么系统好
2020/06/23 Python
一文读懂python Scrapy爬虫框架
2021/02/24 Python
Lookfantastic德国官网:英国知名美妆购物网站
2017/06/11 全球购物
英国家庭家具、照明和花园家具购物网站:Furniture123
2018/12/31 全球购物
Tuckernuck官网:经典的美国品质服装、鞋子和配饰
2021/01/11 全球购物
党员的自我评价范文
2014/01/02 职场文书
自行车租赁公司创业计划书
2014/01/28 职场文书
派出所所长先进事迹
2014/05/19 职场文书
销售行政专员岗位职责
2014/06/10 职场文书
革命电影观后感
2015/06/18 职场文书
2016党员读书思廉心得体会
2016/01/23 职场文书
如何制定销售人员薪酬制度?
2019/07/09 职场文书
Nginx设置日志打印post请求参数的方法
2021/03/31 Servers
解决golang在import自己的包报错的问题
2021/04/29 Golang
anaconda python3.8安装后降级
2021/06/11 Python
vue @click.native 绑定原生点击事件
2022/04/22 Vue.js