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输出一个杨辉三角的例子
Jun 13 Python
Python实现OpenCV的安装与使用示例
Mar 30 Python
django中静态文件配置static的方法
May 20 Python
详解Django+Uwsgi+Nginx的生产环境部署
Jun 25 Python
python多行字符串拼接使用小括号的方法
Mar 19 Python
python实现梯度下降算法
Mar 24 Python
Python爬虫实战之12306抢票开源
Jan 24 Python
浅谈Python小波分析库Pywavelets的一点使用心得
Jul 09 Python
Python 实现输入任意多个数,并计算其平均值的例子
Jul 16 Python
Python多进程编程multiprocessing代码实例
Mar 12 Python
Python 实现将某一列设置为str类型
Jul 14 Python
matplotlib基础绘图命令之imshow的使用
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获取当前url路径的函数以及服务器变量
2013/06/29 PHP
PHP的switch判断语句的“高级”用法详解
2014/10/01 PHP
[原创]ThinkPHP中SHOW_RUN_TIME不能正常显示运行时间的解决方法
2015/10/10 PHP
详解PHP实现执行定时任务
2015/12/21 PHP
Yii框架学习笔记之应用组件操作示例
2019/11/13 PHP
javascript 动态数据下的锚点错位问题解决方法
2008/12/24 Javascript
有道JavaScript监听浏览器的问题
2010/06/23 Javascript
用JQUERY增删元素的代码
2012/02/14 Javascript
几种设置表单元素中文本输入框不可编辑的方法总结
2013/11/25 Javascript
创建、调用JavaScript对象的方法集锦
2014/12/24 Javascript
浅谈javascript中的instanceof和typeof
2015/02/27 Javascript
jQuery div拖拽用法实例
2016/01/14 Javascript
JS函数arguments数组获得实际传参数个数的实现方法
2016/05/28 Javascript
原生js实现弹出层登录拖拽功能
2016/12/05 Javascript
ReactNative列表ListView的用法
2017/08/02 Javascript
jQuery 实现左右两侧菜单添加、移除功能
2018/01/02 jQuery
postman+json+springmvc测试批量添加实例
2018/03/31 Javascript
vuex直接赋值的三种方法总结
2018/09/16 Javascript
微信小程序遍历Echarts图表实现多个饼图
2019/04/25 Javascript
[52:10]LGD vs Optic Supermajor小组赛D组胜者组决赛 BO3 第二场 6.3
2018/06/04 DOTA
[03:13]DOTA2-DPC中国联赛1月25日Recap集锦
2021/03/11 DOTA
Python标准库与第三方库详解
2014/07/22 Python
Python实现完整的事务操作示例
2017/06/20 Python
python版飞机大战代码分享
2018/11/20 Python
对Python的zip函数妙用,旋转矩阵详解
2018/12/13 Python
python实现二分类的卡方分箱示例
2019/11/22 Python
使用Nibabel库对nii格式图像的读写操作
2020/07/01 Python
印尼在线购买隐形眼镜网站:Lensza.co.id
2019/04/27 全球购物
CK澳大利亚官网:Calvin Klein澳大利亚
2020/12/12 全球购物
Sahajan美国:阿育吠陀护肤品牌
2021/01/09 全球购物
Android面试题附答案
2014/12/08 面试题
绝对经典成功的大学生推荐信
2013/11/08 职场文书
高中教师评语大全
2014/04/25 职场文书
停发工资证明范本
2015/06/12 职场文书
Jupyter notebook 输出部分显示不全的解决方案
2021/04/24 Python
golang switch语句的灵活写法介绍
2021/05/06 Golang