'''
在python的应用程序中,不需要关系型数据库时,如MySQL
可以使用python提供的持久字典dbm来存储名称和值(键值对)
这个类似于java的中的java.util.Map对象。
区别如下: 存储在硬盘上面
dbm的键值对必须是字符串类型 python支持的dbm模块 dbm -- 常用的dbm模块
dbm.dumb -- 可移植的,简单的dbm库
dbm.gnu -- GNU dbm库 创建一个dbm对象
db = dbm.open('c:\\test\\Hongten.pag', 'c') 'r' -- open existing database for reading only(default)
'w' -- open existing database for reading and writing
'c' -- open database for reading and writing,creating it if it does'n exist
'n' -- always creat a new,empty database,open for reading and writing 给dbm对象赋值,dbm中的键值对都是以字符串形式出现
db['name'] = 'Hongten'
db['gender'] = 'M' 保存,在dbm对象关闭的时候即可保存数据
db.close() 删除值:
del db['name']
会把db对象中的key = 'name'的值删除 遍历整个db对象:
for key in db.keys():
print(key) '''

运行效果:

运行后,会在:c:\test目录下面出现:

Hongten.pag.bak

Hongten.pag.dat

Hongten.pag.dir

三个文件

输出部分:

Python 3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:03:43) [MSC v.1600 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>>
保存数据...
##################################################
遍历所有数据...
b'name' = b'Hongten'
b'gender' = b'M'
b'address' = b'\xe5\xb9\xbf\xe4\xb8\x9c\xe7\x9c\x81\xe5\xb9\xbf\xe5\xb7\x9e\xe5\xb8\x82'
##################################################
获取[name]键值对数据...
b'Hongten'
##################################################
删除[gender]键值对数据...
遍历所有数据...
b'name' = b'Hongten'
b'address' = b'\xe5\xb9\xbf\xe4\xb8\x9c\xe7\x9c\x81\xe5\xb9\xbf\xe5\xb7\x9e\xe5\xb8\x82'
##################################################
删除所有键值对数据...
遍历所有数据...
>>>

============================================

代码部分:

============================================

 #python dbm

 #Author : Hongten
#MailTo : hongtenzone@foxmail.com
#QQ : 648719819
#Blog : http://www.cnblogs.com/hongten
#Create : 2013-08-09
#Version: 1.0 import dbm
'''
在python的应用程序中,不需要关系型数据库时,如MySQL
可以使用python提供的持久字典dbm来存储名称和值(键值对)
这个类似于java的中的java.util.Map对象。
区别如下: 存储在硬盘上面
dbm的键值对必须是字符串类型 python支持的dbm模块 dbm -- 常用的dbm模块
dbm.dumb -- 可移植的,简单的dbm库
dbm.gnu -- GNU dbm库 创建一个dbm对象
db = dbm.open('c:\\test\\Hongten.pag', 'c') 'r' -- open existing database for reading only(default)
'w' -- open existing database for reading and writing
'c' -- open database for reading and writing,creating it if it does'n exist
'n' -- always creat a new,empty database,open for reading and writing 给dbm对象赋值,dbm中的键值对都是以字符串形式出现
db['name'] = 'Hongten'
db['gender'] = 'M' 保存,在dbm对象关闭的时候即可保存数据
db.close() 删除值:
del db['name']
会把db对象中的key = 'name'的值删除 遍历整个db对象:
for key in db.keys():
print(key) ''' db = dbm.open('c:\\test\\Hongten.pag', 'c') def get_dbm():
'''Open database, creating it if necessary.'''
return dbm.open('c:\\test\\Hongten.pag', 'c') def save(db):
'''保存数据'''
print('保存数据...')
db['name'] = 'Hongten'
db['gender'] = 'M'
db['address'] = '广东省广州市'
db.close() def fetchall(db):
'''遍历所有'''
print('遍历所有数据...')
if db is not None:
for key in db.keys():
print('{} = {}'.format(key, db[key]))
else:
print('dbm object is None!') def fetchone(db, key):
'''获取某个键值对'''
print('获取[{}]键值对数据...'.format(key))
if db is not None:
print(db[key])
else:
print('dbm object is None!') def delete(db, key):
'''删除某个键值对'''
print('删除[{}]键值对数据...'.format(key))
if db is not None:
del db[key]
else:
print('dbm object is None!') def deleteall(db):
'''删除所有键值对'''
print('删除所有键值对数据...')
if db is not None:
for key in db.keys():
del db[key]
else:
print('dbm object is None!') def main():
db = get_dbm()
save(db)
print('#' * 50)
db = get_dbm()
fetchall(db)
print('#' * 50)
fetchone(db, 'name')
print('#' * 50)
delete(db, 'gender')
fetchall(db)
print('#' * 50)
deleteall(db)
fetchall(db) if __name__ == '__main__':
main()

python开发_dbm_键值对存储_完整_博主推荐的更多相关文章

  1. Eclipse的企业开发时常用快捷键使用、优化配置(博主推荐)

    不多说,直接上干货! 一.简介 eclipse可谓是Java开发界的神器,基本占据了大部分的Java开发市场,而且其官方还对其他语言提供支持,如C++,Ruby,JavaScript等等.为什么使用它 ...

  2. 实现键值对存储(三):Kyoto Cabinet 和LevelDB的架构比較分析

    译自  Emmanuel Goossaert (CodeCapsule.com) 在本文中,我将会逐组件地把Kyoto Cabinet 和 LevelDB的架构过一遍.目标和本系列第二部分讲的差点儿相 ...

  3. python开发_tkinter_菜单选项中英文切换_菜单选项不可用操作_博主推荐

    我使用的python版本为:3.3.2 如果你对python中tkinter模块的菜单操作不是很了解,你可以看看: python开发_tkinter_窗口控件_自己制作的Python IDEL_博主推 ...

  4. python开发_tkinter_窗口控件_自己制作的Python IDEL_博主推荐(二)

    在上一篇blog:python开发_tkinter_窗口控件_自己制作的Python IDEL_博主推荐 中介绍了python中的tkinter的一些东西,你可能对tkinter有一定的了解了.这篇b ...

  5. 探索etcd,Zookeeper和Consul一致键值数据存储的性能

    这篇博文是探索三个分布式.一致性键值数据存储软件性能的系列文章中的第一篇:etcd.Zookeeper和Consul,由etcd团队所写,可以让我们全面地了解如何评估三个分布式一致存储软件的性能.翻译 ...

  6. Python 字典(键值对)

    Python 字典(键值对) 创建字典 特性:字典中的键不能变,而且唯一 格式:变量名={"键1":值1,"键2":值2} 函数 作用 dict() 强制转换为 ...

  7. python 对redis 键值对的操作

    我们可以将Redis中的Hashes类型看成具有String Key和String Value的键值对容器.类似python中的dict,javascript的jaon,java 的map,每一个Ha ...

  8. map集合键值对存储,键值不重复,值可以重复

    import java.util.HashMap; import java.util.Hashtable; import java.util.Iterator; import java.util.Li ...

  9. python开发_shelve_完整版_博主推荐

    ''' python中的shelve模块,可以提供一些简单的数据操作 他和python中的dbm很相似. 区别如下: 都是以键值对的形式保存数据,不过在shelve模块中, key必须为字符串,而值可 ...

随机推荐

  1. htmlunit爬虫工具使用--模拟浏览器发送请求,获取JS动态生成的页面内容

    Htmlunit是一款模拟浏览抓取页面内容的java框架,具有js解析引擎(rhino),可以解析页面的js脚本,得到完整的页面内容,特殊适合于这种非完整页面的站点抓取. 下载地址: https:// ...

  2. git@oschina.net源代码管理使用日记【转】

    转自:https://www.cnblogs.com/Juvy/p/3556902.html git的优势: 1 可以创建分支: 2 版本控制是基于每一次提交的,而不需要考虑每次提交了多少个文件. 下 ...

  3. ps aux排序

    按内存升序排列: ps aux --sort=+rss 按内存降序排列: ps aux --sort=-rss 按cpu升序排列: ps aux --sort=+%cpu 为按cpu降序排列. ps ...

  4. Makefile的使用方法

    转自:http://blog.chinaunix.net/uid-403164-id-2407545.html 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Wind ...

  5. hive的窗口函数cume_dist、fercent_rank

    一.cume_dist 这两个序列分析函数不是很常用,这里也介绍一下.注意: 序列函数不支持WINDOW子句. 数据准备: d1,user1, d1,user2, d1,user3, d2,user4 ...

  6. CentOS7中开机出现end_request:I/O error,dev fd0,sector 0的解决办法

    https://blog.csdn.net/wangjinyang_123/article/details/40583635

  7. 【转】django 与 vue 的完美结合 实现前后端的分离开发之后在整合

    https://blog.csdn.net/guan__ye/article/details/80451318   最近接到一个任务,就是用django后端,前段用vue,做一个普通的简单系统,我就是 ...

  8. vue引入Vue-Awesome

    Vue-Awesome建立在Font Awesome上 v4.5.0,取决于Vue.js v2.0.1 +,所以安装了Vue-Awesome就可以直接使用Font Awesome的字体图标. 1.安装 ...

  9. JDOM读取xml

    [摘 要]JDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实现解析.生成.序列化以及多种操作. 一.JDOM 简介 JDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术 ...

  10. 牛客练习赛9 B - 珂朵莉的值域连续段

    题目描述 珂朵莉给你一个有根树,求有多少个子树满足其内部节点编号在值域上连续 一些数在值域上连续的意思即其在值域上构成一个连续的区间 输入描述: 第一行有一个整数n,表示树的节点数.接下来n–1行,每 ...