在一些python小型應用程式中,不需要關係型資料庫時,可以方便的用持久字典來儲存成對的名稱和數值,它與python的字典非常類似,主要區別在於資料是在磁碟讀取和寫入的。另一個區別在於dbm的鍵和值必須是字串類型。
1.選擇dbm模組
python支援很多dbm模組,遺憾的是,每個dbm模組建立的檔案不相容。
下表列出這些模組:
模組說明
dbm選擇最好的dbm模組
dbm.dumb使用dbm庫的一個簡單但可移植的實現
dbm.gnu使用GNU dbm的庫
一般除非某個dbm庫有特殊進階功能,那就用dbm模組。
2.建立持久詞典
import dbmdb = dbm.open('Bookmark', 'c')#添加選項db['MyBlog'] = 'jonathanlife.sinaapp.com'print(db['MyBlog'])#儲存,關閉db.close()
open函數關於開啟dbm的方式有三種:
標誌用法
C開啟檔案對其讀寫,必要時建立該檔案
W開啟檔案對其讀寫,如果檔案不存在,不會建立它
N開啟檔案進行讀寫,但總是建立一個新的空白檔案
也可以傳遞另一種表示模式的選擇性參數,該模式儲存了一組UNIX檔案許可權,這裡不細說。
3.訪問持久字典
從open函數返回的對象視作一個字典對象。對值的存取方式如下:
db[‘key’] = ‘value’value = db[‘key’]#刪除值:del db[‘key’]#遍曆所有key:for key in db.keys(): #your code here
代碼執行個體:
import dbm#open existing filedb = dbm.open('websites', 'w')#add itemdb['first_data'] = 'Hello world' #verify the previous item remainsif db['first_data'] != None: print('the data exists')else: print('Missing item') #iterate over the keys, may be slowfor key in db.keys(): print("Key=",key," value=",db[key]) #delete itemdel db['first_data'] #close and save to diskdb.close()