python开发_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) '''
运行效果:
运行后,会在: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' ################################################## 删除所有键值对数据... 遍历所有数据... >>>
============================================
代码部分:
============================================
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()