Python 與 Unix 資料庫 (dbm) 介面


Python 內建庫中的 dbm 包提供了一個類似字典的介面,用於 DBM 風格的資料庫。dbm 庫是一個簡單的資料庫引擎,由 Ken Thompson 編寫。DBM 代表資料庫管理器 (DataBase Manager),用於 Unix 作業系統,該庫使用單個鍵(主鍵)將任意資料儲存在固定大小的桶中,並使用雜湊技術透過鍵快速檢索資料。

dbm 包中包含以下模組:

dbm.ndbm 模組提供與 Unix “(n)dbm” 庫的介面。Dbm 物件的行為類似於字典,鍵和值應儲存為位元組。該模組不支援 items() 和 values() 方法。

dbm.dumb 模組提供了一個永續性字典式介面,完全用 Python 編寫。與 dbm.gnu 等其他模組不同,它不需要外部庫。與其他永續性對映一樣,鍵和值始終儲存為位元組。

這些模組在 Python 的 shelve 模組中被內部使用。與 shelve 資料庫一樣,使用者指定的資料庫名稱帶有 '.dir' 字尾。dbm 物件的 whichdb() 函式指示當前 Python 安裝中可用的 dbm 實現。

>>> dbm.whichdb('mydbm.db')

‘dbm.dumb’

>>> db = dbm.open('mydbm.db','n')
>>> db['name'] = Rajani Deshmukh'
>>> db['address'] = 'Shivajinagar Pune'
>>> db['PIN'] = '431001'
>>> db.close()

open() 函式允許使用這些標誌:

含義
‘r’
以只讀方式開啟現有資料庫(預設)
‘w’
以讀寫方式開啟現有資料庫
‘c’
以讀寫方式開啟資料庫,如果資料庫不存在則建立它
‘n’
始終建立一個新的空資料庫,以讀寫方式開啟

dbm 物件類似於字典物件,就像 shelf 物件一樣。因此,可以執行所有字典操作。dbm 物件可以呼叫 get()、pop()、append() 和 update() 方法。以下程式碼使用 'r' 標誌開啟 'mydbm.db' 並迭代鍵值對集合。

>>> db = dbm.open('mydbm.db','r')
>>> for k,v in db.items():
print (k,v)
b'name' : Rajani Deshmukh'
b'address' : b'Shivajinagar Pune'
b'PIN' : b'431001'

dbm 物件還提供以下方法:

**sync():** 同步磁碟上的目錄和資料檔案。此方法由 Shelve.sync() 方法呼叫。

**close():** 關閉 dbm 資料庫。

gnu dbm 物件具有以下方法:

firstkey()

可以使用此方法和 nextkey() 方法遍歷資料庫中的每個鍵。此方法返回起始鍵。

**gdbm.nextkey(key):** 返回遍歷中跟隨 key 的鍵。

**gdbm.reorganize():** 此函式將重新組織資料庫。gnu dbm 物件不會縮短資料庫檔案的長度,除非使用此重新組織功能;否則,已刪除的檔案空間將被保留並被重新用作新增新的 (鍵,值) 對。

更新於:2019年7月30日

瀏覽量:207

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告