1. 程式人生 > >Python中的資料儲存模組shelve的用法

Python中的資料儲存模組shelve的用法

shelve類似於一個key-value資料庫,可以很方便的用來儲存Python的記憶體物件,其內部使用pickle來序列化資料,簡單來說,使用者可以將一個列表、字典、或者使用者自定義的類例項儲存到shelve中,下次需要用的時候直接取出來,就是一個Python記憶體物件,不需要像傳統資料庫一樣,先取出資料,然後用這些資料重新構造一遍所需要的物件。

shelve是一額簡單的資料儲存方案,他只有一個函式就是open(),這個函式接收一個引數就是檔名,並且檔名必須是.bat型別的。然後返回一個shelf物件,你可以用他來儲存東西,就可以簡單的把他當作一個字典,當你儲存完畢的時候,就呼叫close函式來關閉

 

這個有一個潛在的小問題,如下:

import shelve

list = [1, 2, 3]

she = shelve.open('test.dat')
she['d'] = list
she['d'].append('f')print(she['d'])

你會發現,列印後,沒有‘f’ ,儲存的f到哪裡去了呢?其實很簡單,d沒有寫回,你把[1,2,3]存到了d,當你再次讀取she['d']的時候,she['d']只是一個拷貝,而你沒有將拷貝寫回,所以當你再次讀取she['d']的時候,它又從源中讀取了一個拷貝,所以,你新修改的內容並不會出現在拷貝中,解決的辦法就是,第一個是利用一個快取的變數,如下所示

import shelve

list = [1, 2, 3]

she = shelve.open('test.dat')
she['d'] = list
temp = she['d']
temp.append('f')
she['d'] = temp
print(she['d'])