在一些python小型應用程序中,不需要關系型數據庫時,可以方便的用持久字典來存儲名稱/值對,它與python的字典非常類似,主要區別在於數據是在磁盤讀取和寫入的。另一個區別在於dbm的鍵和值必須是字符串類型。
1.選擇dbm模塊
python支持很多dbm模塊,遺憾的是,每個dbm模塊創建的文件不兼容。
下表列出這些模塊:
| 模塊 | 說明 |
| dbm | 選擇最好的dbm模塊 |
| dbm.dumb | 使用dbm庫的一個簡單但可移植的實現 |
| dbm.gnu | 使用GNU dbm的庫 |
一般除非某個dbm庫有特殊高級功能,那就用dbm模塊。
2.創建持久詞典
代碼:
import dbm
db = 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
可以將如下腳本作為一個使用dbm的指導:
import dbm
#open existing file
db = dbm.open('websites', 'w')
#add item
db['first_data'] = 'Hello world'
#verify the previous item remains
if db['first_data'] != None:
print('the data exists')
else:
print('Missing item')
#iterate over the keys, may be slow
for key in db.keys():
print("Key=",key," value=",db[key])
#delete item
del db['first_data']
#close and save to disk
db.close()
done,預祝各位程序猿們happy new year。
