Python 物件持久化 (shelve)
Python 標準庫中的 shelve 模組是一個簡單而有效的持久化資料儲存工具,在不需要關係資料庫解決方案時可以使用。該模組中定義的 shelf 物件是一個類似字典的物件,持久儲存在磁碟檔案中。這會建立一個類似於類 Unix 系統上 dbm 資料庫的檔案。只有字串資料型別可以用作此特殊字典物件的鍵,而任何可 pickle 的物件都可以用作值。
shelve 模組定義了以下三個類:
| 序號 | 模組及描述 |
|---|---|
| 1 | Shelf 這是 shelf 實現的基類。它使用類似字典的物件進行初始化。 |
| 2 | BsdDbShelf 這是 Shelf 類的子類。傳遞給其建構函式的字典物件必須支援 first()、next()、previous()、last() 和 set_location() 方法。 |
| 3 | DbfilenameShelf 這也是 Shelf 的子類,但它接受檔名作為其建構函式的引數,而不是字典物件。 |
建立 Shelf 物件最簡單的方法是使用 shelve 模組中定義的 open() 函式,它返回一個 DbfilenameShelf 物件。
open(filename, flag = 'c', protocol=None, writeback = False)
檔名引數被分配給建立的資料庫。
flag 引數的預設值為 'c',表示讀寫訪問。其他標誌為 'w'(只寫)、'r'(只讀)和 'n'(新的讀寫)。
protocol 引數表示 pickle 協議,writeback 引數預設為 false。如果設定為 true,則快取訪問的條目。每次訪問都會呼叫 sync() 和 close() 操作,因此程序可能會變慢。
以下程式碼建立了一個數據庫並在其中儲存字典條目。
import shelve
s = shelve.open("test")
s['name'] = "Ajay"
s['age'] = 23
s['marks'] = 75
s.close()這將在當前目錄中建立 test.dir 檔案,並將鍵值資料以雜湊形式儲存。Shelf 物件具有以下可用方法:
| 序號 | 方法及描述 |
|---|---|
| 1 | close() 同步並關閉持久化字典物件。 |
| 2 | sync() 如果 shelf 以 writeback 設定為 True 開啟,則寫回快取中的所有條目。 |
| 3 | get() 返回與鍵關聯的值。 |
| 4 | items() 元組列表——每個元組都是鍵值對。 |
| 5 | keys() shelf 鍵的列表。 |
| 6 | pop() 刪除指定的鍵並返回相應的值。 |
| 7 | update() 從另一個字典/可迭代物件更新 shelf。 |
| 8 | values() shelf 值的列表。 |
訪問 shelf 中特定鍵的值。
>>> s=shelve.open('test')
>>> s['age']
23
>>> s['age']=25
>>> s.get('age')
25items()、keys() 和 values() 方法返回檢視物件。
>>> list(s.items())
[('name', 'Ajay'), ('age', 25), ('marks', 75)]
>>> list(s.keys())
['name', 'age', 'marks']
>>> list(s.values())
['Ajay', 25, 75]從 shelf 中刪除鍵值對。
>>> s.pop('marks')
75
>>> list(s.items())
[('name', 'Ajay'), ('age', 25)]請注意,marks-75 的鍵值對已被刪除。
要將另一個字典的專案與 shelf 合併,請使用 update() 方法。
>>> d={'salary':10000, 'designation':'manager'}
>>> s.update(d)
>>> list(s.items())
[('name', 'Ajay'), ('age', 25), ('salary', 10000), ('designation', 'manager')]在本文中,我們學習了 shelve 模組,它提供了一種方便的機制來儲存持久化字典物件。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP