python使用dbm持久字典(python微型資料庫)詳解

pythontab發表於2013-02-05

在一些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

程式碼例項:

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()

相關文章