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编写一个简单的FUSE文件系统的教程
Apr 02 Python
Python统计文件中去重后uuid个数的方法
Jul 30 Python
实用自动化运维Python脚本分享
Jun 04 Python
对Python3 序列解包详解
Feb 16 Python
python远程连接MySQL数据库
Apr 19 Python
Python基础学习之函数方法实例详解
Jun 18 Python
django foreignkey外键使用的例子 相当于left join
Aug 06 Python
Python assert关键字原理及实例解析
Dec 13 Python
Python sqlite3查询操作过程解析
Feb 20 Python
解决pymysql cursor.fetchall() 获取不到数据的问题
May 15 Python
python获取系统内存占用信息的实例方法
Jul 17 Python
Python lambda表达式原理及用法解析
Aug 18 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
哪吒敖丙传:新人物二哥敖乙出场 小敖丙奶气十足
2020/03/08 国漫
关于更改Zend Studio/Eclipse代码风格主题的介绍
2013/06/23 PHP
php中apc缓存使用示例
2013/12/25 PHP
游戏人文件夹程序 ver 3.0
2006/07/14 Javascript
『jQuery』名称冲突使用noConflict方法解决
2013/04/22 Javascript
加载远程图片时,经常因为缓存而得不到更新的解决方法(分享)
2013/06/26 Javascript
JS对img标签进行优化使用onerror显示默认图像
2014/04/24 Javascript
使用原生JS实现弹出层特效
2014/12/22 Javascript
jQuery代码实现对话框右上角菜单带关闭×
2016/05/03 Javascript
vue-cli+webpack在生成的项目中使用bootstrap实例代码
2017/05/26 Javascript
浅谈Vue2.0父子组件间事件派发机制
2018/01/08 Javascript
vue与vue-i18n结合实现后台数据的多语言切换方法
2018/03/08 Javascript
Vuex 使用及简单实例(计数器)
2018/08/29 Javascript
6行代码实现微信小程序页面返回顶部效果
2018/12/28 Javascript
详解Vue路由自动注入实践
2019/04/17 Javascript
夯基础之手撕javascript继承详解
2020/11/09 Javascript
Vue仿百度搜索功能
2020/12/28 Vue.js
[06:53]DOTA2每周TOP10 精彩击杀集锦vol.3
2014/06/25 DOTA
[41:17]完美世界DOTA2联赛PWL S3 access vs CPG 第二场 12.13
2020/12/17 DOTA
Python下Fabric的简单部署方法
2015/07/14 Python
实例讲解Python设计模式编程之工厂方法模式的使用
2016/03/02 Python
pycharm中连接mysql数据库的步骤详解
2017/05/02 Python
Python实现求解括号匹配问题的方法
2018/04/17 Python
python中dict使用方法详解
2019/07/17 Python
Python监听键盘和鼠标事件的示例代码
2020/11/18 Python
CSS3制作Dropdown下拉菜单的方法
2015/07/18 HTML / CSS
浅谈css3中的渐进增强和优雅降级
2017/12/01 HTML / CSS
美国婚礼礼品网站:MyWeddingFavors
2018/09/26 全球购物
印尼值得信赖的在线交易网站:Bukalapak
2019/03/11 全球购物
俄语地区最大的中国商品在线购物网站之一:Umka Mall
2019/11/03 全球购物
请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1
2015/07/16 面试题
最热门的自我评价
2013/12/30 职场文书
党的群众路线教育实践活动总结报告
2014/04/28 职场文书
2015年毕业生个人自荐书
2015/03/24 职场文书
行为规范主题班会
2015/08/13 职场文书
《富饶的西沙群岛》教学反思
2016/02/16 职场文书