Python Skelve 库
在Python中有一个简单的轻量级的类似于Key-value的存储型数据库,那就是Skelve。下面就来一起看一看这个库的简单的使用吧。
小例子
我本人比较喜欢从例子出发,然后再来研究这些内部的行为。所以下面先来看一个简单的小例子吧。
>>> def write():
... data=shelve.open(r'F:\Data.dat')
... map = {}
... map['name'] ="mark"
... map['age'] = 20
... pid ='mark'
... data[pid] = map
... data.close()
... print 'file writed success!'
...
>>> write()
file writed success!
>>> def read():
... pid='mark'
... data[pid]=shelve.open(r'F:\Data.dat')
... print "File read Success!"
...
>>> read()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in read
NameError: global name 'data' is not defined
>>> def read
File "<stdin>", line 1
def read
^
SyntaxError: invalid syntax
>>> del read
>>> def read():
... pid = 'mark'
... data = shelve.open(r'F:\Data.dat')
... print "File read Success!"
... return data[pid]
...
>>> write()
file writed success!
>>> read()
File read Success!
{'age': 20, 'name': 'mark'}
>>>
现在到电脑上的F盘看一下文件的详细的信息吧。
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0128
6470 310a 5327 6167 6527 0a70 320a 4932
300a 7353 276e 616d 6527 0a70 330a 5327
6d61 726b 270a 7034 0a73 2e01 6d61 726b
它们都是通特定的编码来实现的持久化的操作,如果我们想获取数据的话,就只能按照给定的接口来进行获取了。
浅析
先来看存储那个接口的实现吧。
>>> def write():
... data=shelve.open(r'F:\Data.dat')
... map = {}
... map['name'] ="mark"
... map['age'] = 20
... pid ='mark'
... data[pid] = map
... data.close()
... print 'file writed success!'
...
观察 : 这里主要是调用了Shelve的open接口。作用就是打开特定路径下的一个文件,这里以.dat后缀结束了。
然后我们看到了一个key的变量,对应了一个值,而另外一个value则是一个类似字典的集合。最后通过Shelve整合了起来。这就是整个流程。
原理: 这样我们就不难看出了吧。整个数据持久化的逻辑就是通过一个键值对的形式来保存的。外界通过接口来实现数据的存储。
看完了写入,接下来就是读取数据了。下面也是来研读一下代码吧。
>>> def read():
... pid='mark'
... data[pid]=shelve.open(r'F:\Data.dat')
... print "File read Success!"
...
这里更加的简单,指定的key肯定对应了指定的值。通过Skelve的接口,我们就可以获取到数据key对应的value了。接下来要怎么操作,就看自己的需求了。
小结
作为一个轻量级的数据持久化的库,Skelve并没有很高的使用价值,但是却可以高效的完成小数据的持久化过程。在某些情况下,这还是很有必要的。所以,要不要使用它,就由你来决定了。
不管你用,还是不用,Skelve都在那里。不怨不恨。
Python Skelve 库的更多相关文章
- python+paramiko库+svn写的自动化部署脚本
第一篇博文 直接开门见山的说了. 这是件什么事?:每次部署都是复制本地的文件粘贴到服务器端,因为路径复杂,所以费时且手工容易出漏洞. 一直在想有什么办法可以解决这种,因为以前在微软的一个牛人同事做过一 ...
- 安装Python算法库
安装Python算法库 主要包括用NumPy和SciPy来处理数据,用Matplotlib来实现数据可视化.为了适应处理大规模数据的需求,python在此基础上开发了Scikit-Learn机器学习算 ...
- Python标准库14 数据库 (sqlite3)
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python自带一个轻量级的关系型数据库SQLite.这一数据库使用SQL语言.S ...
- 常用python机器学习库总结
开始学习Python,之后渐渐成为我学习工作中的第一辅助脚本语言,虽然开发语言是Java,但平时的很多文本数据处理任务都交给了Python.这些年来,接触和使用了很多Python工具包,特别是在文本处 ...
- [Python] 机器学习库资料汇总
声明:以下内容转载自平行宇宙. Python在科学计算领域,有两个重要的扩展模块:Numpy和Scipy.其中Numpy是一个用python实现的科学计算包.包括: 一个强大的N维数组对象Array: ...
- python常用库
本文由 伯乐在线 - 艾凌风 翻译,Namco 校稿.未经许可,禁止转载!英文出处:vinta.欢迎加入翻译组. Awesome Python ,这又是一个 Awesome XXX 系列的资源整理,由 ...
- python标准库00 学习准备
Python标准库----走马观花 python有一套很有用的标准库.标准库会随着python解释器一起安装在你的电脑上的.它是python的一个组成部分.这些标准库是python为你准备的利器,可以 ...
- Python标准库:内置函数hasattr(object, name)
Python标准库:内置函数hasattr(object, name) 本函数是用来判断对象object的属性(name表示)是否存在.如果属性(name表示)存在,则返回True,否则返回False ...
- python标准库xml.etree.ElementTree的bug
使用python生成或者解析xml的方法用的最多的可能就数python标准库xml.etree.ElementTree和lxml了,在某些环境下使用xml.etree.ElementTree更方便一些 ...
随机推荐
- NOIWC2018 游记
day1 上午是自习,做了一些杂题,看了一下ppt,中午准备了一下行李,就出发了,提前了一个小时,谁知道被坑爹导航弄得居然到晚了一点 当走到这里的时候我愣住了 纠结了一分钟,直到有个boy走了进去,我 ...
- 51 nod 1456 小K的技术(强连通 + 并查集)
1456 小K的技术 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题 苏塞克王国是世界上创新技术的领先国家,在王国中有n个城市 ...
- hdu 5015(矩阵快速幂z )
a[i][j] = a[i-1][j] + a[i][j-1] m.特别大,可以计算出第一列,找出规律,构建一个特殊的矩阵,运用快速幂 设矩阵x: 1 0 0 0 ... |10 1 1 1 0 0 ...
- 2015 多校联赛 ——HDU5289(二分+ST)
Assignment Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total ...
- [2017.4.7校内训练赛by hzwer]
来自FallDream的博客,未经允许,请勿转载,谢谢. 报警啦.......hzwer又出丧题虐人啦..... 4道ctsc...有一道前几天做过了,一道傻逼哈希还wa了十几次,勉强过了3题..我好 ...
- typedef的基本用法
1. 四个用途 用途一: 定义一种类型的别名,而不只是简单的宏替换.可以用作同时声明指针型的多个对象.比如: char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针 ...
- JSON概述
错误理解: 一直以为JSON就是对象,拥有跟js对象类似的特征:{key:value}形式, 以至于在自己的思维定式中就出现了一种很可怕的情景:居然不知道怎么去解释习以为常的json是 ...
- python3全栈开发-多进程的守护进程、进程同步、生产者消费者模式(重点)
一.守护进程 主进程创建守护进程 其一:守护进程会在主进程代码执行结束后就终止 其二:守护进程内无法再开启子进程,否则抛出异常:AssertionError: daemonic processes a ...
- LeetCode 2
No1 Given a sorted array and a target value, return the index if the target is found. If not, return ...
- JNI 方法注册与签名+BufferedReader使用readLine问题
最近了解了关于JavaJNI接口的一些关于方法注册与签名相关的知识,在此进行一下总结. 使用JNI接口时,我们首先需要把Java方法声明为native: public native void f(); ...