博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python开发_dbm_键值对存储_完整_博主推荐
阅读量:5991 次
发布时间:2019-06-20

本文共 4621 字,大约阅读时间需要 15 分钟。

'''    在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 win32Type "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'##################################################删除所有键值对数据...遍历所有数据...>>>

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

代码部分:

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

1 #python dbm  2   3 #Author : Hongten  4 #MailTo : hongtenzone@foxmail.com  5 #QQ     : 648719819  6 #Blog   : http://www.cnblogs.com/hongten  7 #Create : 2013-08-09  8 #Version: 1.0  9  10 import dbm 11 ''' 12     在python的应用程序中,不需要关系型数据库时,如MySQL 13     可以使用python提供的持久字典dbm来存储名称和值(键值对) 14     这个类似于java的中的java.util.Map对象。 15     区别如下: 16  17         存储在硬盘上面 18         dbm的键值对必须是字符串类型 19  20     python支持的dbm模块 21  22         dbm         -- 常用的dbm模块 23         dbm.dumb    -- 可移植的,简单的dbm库 24         dbm.gnu     -- GNU dbm库 25  26     创建一个dbm对象 27     db = dbm.open('c:\\test\\Hongten.pag', 'c') 28  29         'r'         --  open existing database for reading only(default) 30         'w'         --  open existing database for reading and writing 31         'c'         --  open database for reading and writing,creating it if it does'n exist 32         'n'         --  always creat a new,empty database,open for reading and writing 33  34     给dbm对象赋值,dbm中的键值对都是以字符串形式出现 35     db['name'] = 'Hongten' 36     db['gender'] = 'M' 37  38     保存,在dbm对象关闭的时候即可保存数据 39     db.close() 40  41     删除值: 42     del db['name'] 43     会把db对象中的key = 'name'的值删除 44  45     遍历整个db对象: 46     for key in db.keys(): 47         print(key) 48      49 ''' 50  51 db = dbm.open('c:\\test\\Hongten.pag', 'c') 52  53 def get_dbm(): 54     '''Open database, creating it if necessary.''' 55     return dbm.open('c:\\test\\Hongten.pag', 'c') 56  57 def save(db): 58     '''保存数据''' 59     print('保存数据...') 60     db['name'] = 'Hongten' 61     db['gender'] = 'M' 62     db['address'] = '广东省广州市' 63     db.close() 64  65 def fetchall(db): 66     '''遍历所有''' 67     print('遍历所有数据...') 68     if db is not None: 69         for key in db.keys(): 70             print('{} = {}'.format(key, db[key])) 71     else: 72         print('dbm object is None!') 73  74 def fetchone(db, key): 75     '''获取某个键值对''' 76     print('获取[{}]键值对数据...'.format(key)) 77     if db is not None: 78         print(db[key]) 79     else: 80         print('dbm object is None!') 81  82 def delete(db, key): 83     '''删除某个键值对''' 84     print('删除[{}]键值对数据...'.format(key)) 85     if db is not None: 86         del db[key] 87     else: 88         print('dbm object is None!') 89  90 def deleteall(db): 91     '''删除所有键值对''' 92     print('删除所有键值对数据...') 93     if db is not None: 94         for key in db.keys(): 95             del db[key] 96     else: 97         print('dbm object is None!') 98  99 def main():100     db = get_dbm()101     save(db)102     print('#' * 50)103     db = get_dbm()104     fetchall(db)105     print('#' * 50)106     fetchone(db, 'name')107     print('#' * 50)108     delete(db, 'gender')109     fetchall(db)110     print('#' * 50)111     deleteall(db)112     fetchall(db)113     114 if __name__ == '__main__':115     main()

 

你可能感兴趣的文章
前端知识点-jsonp csrf
查看>>
信息架构:看不到不代表不存在
查看>>
JSP标签 jstl 的常用方法
查看>>
数据库内核月报 - 2015 / 10-TokuDB · 捉虫动态 · CREATE DATABASE 导致crash问题
查看>>
大众点评Cat--Server模块架构分析
查看>>
精通HTML表格的使用
查看>>
MySQL和Lucene索引对比分析
查看>>
SQL To LinQ 你知道么?
查看>>
php 把对象转化为json
查看>>
高大上必备!D3.js对产品的贡献度剖析
查看>>
BOCHS一定要XWINDOWS调试
查看>>
多线程基础(七)GCD线程组+栅栏函数
查看>>
【Ubuntu】Linux系统( ubuntu )安装方案
查看>>
递归与尾递归(C语言)
查看>>
C++标准库string类型
查看>>
Oracle 11gR2学习之三(创建用户及表空间、修改字符集和Oracle开机启动)
查看>>
(ORACLE)查看分区表的相关信息
查看>>
[翻译] Fast Image Cache
查看>>
iOS UIView动画详解(Objective-C)
查看>>
文件操作的一些疑问
查看>>