shelve是以鍵值對的形式,將記憶體中的資料通過檔案持久化,值支援任何pickle支援的python資料格式,它會在目錄下生成三個檔案。
import shelve
s = shelve.open('test.db')
s['k1']=
s.close() #關閉檔案
s = shelve.open('test.db') #開啟檔案
print(s['k1'])
print(s['k1']['int'])
s.close()
對於儲存的key,value值,只能新增key,value,可修改整個value,不能單獨修改列表或字典中的元素
s = shelve.open('test.db',flag='r')
print(s['k1'])
s['k2']=[1,2,3] #新增資料
print(s['k2'])
s['k2'][0]=99 #修改儲存的value的單個值時不生效也不報錯
print(s['k2'])
s.close()
s = shelve.open('test.db',flag='c')
s.keys()
s['k2']=(33,44)
print(s['k2'])
寫回(write-back)由於shelve在預設情況下是不會記錄待持久化物件的任何修改的,所以我們在shelve.open()時候需要修改預設引數,否則物件的修改不會儲存。
s = shelve.open('test.db',writeback=true) #使用回寫功能開啟
print(s['k1']) #初始值
print(s['k2'])
s['k1']['float']='99.99' #修改字典中的元素
print(s['k1']) #成功修改
writeback方式有優點也有缺點。優點是減少了我們出錯的概率,並且讓物件的持久化對使用者更加的透明了;但這種方式並不是所有的情況下都需要,首先,使用writeback以後,shelf在open()的時候會增加額外的記憶體消耗,並且當db在close()的時候會將快取中的每乙個物件都寫入到db,這也會帶來額外的等待時間。因為shelve沒有辦法知道快取中哪些物件修改了,哪些物件沒有修改,因此所有的物件都會被寫入。
print(s['k1'])
s['k1']['list']=[1,2,3]
s['k1']['tuple']=(4,5,6)
s['k1']['dic']=
print(s['k1'])
**: python持久化快取 Python資料持久化儲存
1 pymongo的使用 前三步為建立物件 第一步建立連線物件 conn pymongo.mongoclient ip位址 27017 第二步建立庫 db conn 庫名 第三步建立表 myset db 集合名 第四步把資料插入資料庫 myset.inset.one usr bin python c...
編譯python2 5,支援SSL
config make sudo make install 2 編譯,安裝python socket module helper for ssl support you must comment out the other socket line above,and possibly edit th...
如何實現ActiveMq的Topic的持久訂閱
整理 如何實現activemq的topic的持久訂閱 web.xml中的配置作用 整理 activemq的簡單使用方法 新增日期 2013 9 5 10 23 29 快速返回 返回列表 閱讀8971次 1 使用queue,即佇列時,每個訊息只有乙個消費者,所以,持久化很簡單,只要儲存到資料庫即可 然...