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获取本地计算机名字的方法
Apr 29 Python
Python自动化运维之IP地址处理模块详解
Dec 10 Python
django的settings中设置中文支持的实现
Apr 28 Python
Django框架模板的使用方法示例
May 25 Python
Python Numpy库datetime类型的处理详解
Jul 13 Python
django获取from表单multiple-select的value和id的方法
Jul 19 Python
python设计tcp数据包协议类的例子
Jul 23 Python
np.newaxis 实现为 numpy.ndarray(多维数组)增加一个轴
Nov 30 Python
python多线程使用方法实例详解
Dec 30 Python
实现ECharts双Y轴左右刻度线一致的例子
May 16 Python
使用AJAX和Django获取数据的方法实例
Oct 25 Python
用python自动生成日历
Apr 24 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 SQL防注入代码集合
2008/04/25 PHP
检测png图片是否完整的php代码
2010/09/06 PHP
用PHP来计算某个目录大小的方法
2014/04/01 PHP
PHP小技巧之函数重载
2014/06/02 PHP
在Win7 中为php扩展配置Xcache
2014/10/08 PHP
PHP图像处理之imagecreate、imagedestroy函数介绍
2014/11/19 PHP
php通过header发送自定义数据方法
2018/01/18 PHP
PHP中的访问修饰符简单比较
2019/02/02 PHP
解决IE6的PNG透明JS插件使用介绍
2013/04/17 Javascript
JQuery加载图片自适应固定大小的DIV
2013/09/12 Javascript
基于jquery实现的图片在各种分辨率下未知的容器内上下左右居中
2014/05/11 Javascript
jQuery Ajax()方法使用指南
2014/11/19 Javascript
用户代理字符串userAgent可实现的四个识别
2015/09/20 Javascript
给easyui datebox扩展一个清空的实例
2016/11/09 Javascript
Vue 过渡实现轮播图效果
2017/03/27 Javascript
客户端(vue框架)与服务器(koa框架)通信及服务器跨域配置详解
2017/08/26 Javascript
vue2.0开发入门笔记之.vue文件的生成和使用
2017/09/19 Javascript
vue服务端渲染添加缓存的方法
2018/09/18 Javascript
Vue.js 使用v-cloak后仍显示变量的解决方法
2018/11/19 Javascript
vue-cli3 项目优化之通过 node 自动生成组件模板 generate View、Component
2019/04/30 Javascript
jquery实现二级导航下拉菜单效果实例
2019/05/14 jQuery
Node.js开发之套接字(socket)编程入门示例
2019/11/05 Javascript
JS eval代码快速解密实例解析
2020/04/23 Javascript
vue使用exif获取图片经纬度的示例代码
2020/12/11 Vue.js
python实现自动重启本程序的方法
2015/07/09 Python
PyCharm安装Markdown插件的两种方法
2019/06/24 Python
PyTorch之nn.ReLU与F.ReLU的区别介绍
2020/06/27 Python
css3实现垂直下拉动画菜单示例
2014/04/22 HTML / CSS
HTML5头部标签的一些常用信息小结
2016/10/23 HTML / CSS
日本必酷网络直营店:Biccamera
2019/03/23 全球购物
Piercing Pagoda官网:耳环、戒指、项链、手链等
2020/09/28 全球购物
超市开店计划书
2014/04/26 职场文书
食品委托检验协议书范本
2014/09/12 职场文书
婚礼答谢词
2015/01/04 职场文书
酒店温馨提示语
2015/07/14 职场文书
python设置 matplotlib 正确显示中文的四种方式
2021/05/10 Python