擱置

注意: 不要靠貨架自動關閉; 當你不再需要它時,總是明確地呼叫 close(),或者使用 shelve.open() 作為上下文管理器:

with shelve.open('spam') as db:
    db['eggs'] = 'eggs'

警告:

由於 shelve 模組由 pickle 支援,因此從不受信任的來源載入貨架是不安全的。與 pickle 一樣,載入架子可以執行任意程式碼。

限制

1 。選擇使用哪個資料庫包(例如 dbm.ndbm 或 dbm.gnu)取決於可用的介面。因此,使用 dbm 直接開啟資料庫是不安全的。資料庫(不幸的是)也受到 dbm 的限制,如果使用的話 - 這意味著儲存在資料庫中的物件的(醃製表示)應該相當小,並且在極少數情況下,金鑰衝突可能導致資料庫拒絕更新。

2. 擱置模組不支援對擱置物件的併發讀/寫訪問。 (多個同時讀取訪問是安全的。)當程式開啟一個架子進行寫入時,沒有其他程式可以開啟它進行讀寫。Unix 檔案鎖定可用於解決此問題,但這在 Unix 版本中有所不同,需要了解所使用的資料庫實現。