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实现html转ubb代码(html2ubb)
Jul 03 Python
Django返回json数据用法示例
Sep 18 Python
在Python的一段程序中如何使用多次事件循环详解
Sep 07 Python
python numpy和list查询其中某个数的个数及定位方法
Jun 27 Python
Python3.5文件修改操作实例分析
May 01 Python
python使用tomorrow实现多线程的例子
Jul 20 Python
Python3 列表,数组,矩阵的相互转换的方法示例
Aug 05 Python
用python的turtle模块实现给女票画个小心心
Nov 23 Python
使用Keras画神经网络准确性图教程
Jun 15 Python
Python 没有main函数的原因
Jul 10 Python
一文详述 Python 中的 property 语法
Sep 01 Python
如何解决python多种版本冲突问题
Oct 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
一个目录遍历函数
2006/10/09 PHP
Yii 快速,安全,专业的PHP框架
2014/09/03 PHP
php中青蛙跳台阶的问题解决方法
2018/10/14 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
js不是基础的基础
2006/12/24 Javascript
jQuery timers计时器简单应用说明
2010/10/28 Javascript
javascript开发中因空格引发的错误
2010/11/08 Javascript
JavaScript传递变量: 值传递?引用传递?
2011/02/22 Javascript
js,jQuery 排序的实现代码,网页标签排序的实现,标签排序
2011/04/27 Javascript
JavaScript的21条基本知识点
2014/03/04 Javascript
JQuery导航菜单选择特效
2016/04/11 Javascript
BootStrap的JS插件之轮播效果案例详解
2016/05/16 Javascript
Bootstrap模块dropdown实现下拉框响应
2016/05/22 Javascript
js遍历map javaScript遍历map的简单实现
2016/08/26 Javascript
Angular+Node生成随机数的方法
2017/06/16 Javascript
JS加密插件CryptoJS实现AES加密操作示例
2018/08/16 Javascript
解决vue动态下拉菜单 有数据未反应的问题
2020/08/06 Javascript
原生js实现贪吃蛇游戏
2020/10/26 Javascript
Javascript文本框脚本实现方法解析
2020/10/30 Javascript
JS如何调用WebAssembly编译出来的.wasm文件
2020/11/05 Javascript
python3访问sina首页中文的处理方法
2014/02/24 Python
Python的Django框架可适配的各种数据库介绍
2015/07/15 Python
Python实现的购物车功能示例
2018/02/11 Python
python 并发下载器实现方法示例
2019/11/22 Python
Django数据结果集序列化并展示实现过程
2020/04/22 Python
python 实现 hive中类似 lateral view explode的功能示例
2020/05/18 Python
CSS3 display知识详解
2015/11/25 HTML / CSS
Spotahome意大利:公寓和房间出租
2020/02/21 全球购物
JSF面试题:Jsf中导航的标签是什么
2013/04/20 面试题
.NET现在共支持多少种语言
2014/02/26 面试题
领导干部廉政自律承诺书
2014/05/26 职场文书
四风剖析查摆对照检查材料思想汇报
2014/09/24 职场文书
2014年护士长工作总结
2014/11/11 职场文书
2015年“世界无车日”活动方案
2015/05/06 职场文书
MySQL如何解决幻读问题
2021/08/07 MySQL
Python Django / Flask如何使用Elasticsearch
2022/04/19 Python