Python使用Shelve保存對象方法總結(jié)
Shelve是一個(gè)功能強(qiáng)大的Python模塊,用于對象持久性。擱置對象時(shí),必須指定一個(gè)用于識別對象值的鍵。通過這種方式,擱置文件成為存儲(chǔ)值的數(shù)據(jù)庫,其中任何一個(gè)都可以隨時(shí)訪問。
Python中擱置的示例代碼
要擱置對象,首先導(dǎo)入模塊,然后按如下方式分配對象值:
import shelve database = shelve.open(filename.suffix) object = Object() database['key'] = object
例如,如果要保留股票數(shù)據(jù)庫,可以調(diào)整以下代碼:
import shelve stockvalues_db = shelve.open('stockvalues.db') object_ibm = Values.ibm() stockvalues_db['ibm'] = object_ibm object_vmw = Values.vmw() stockvalues_db['vmw'] = object_vmw object_db = Values.db() stockvalues_db['db'] = object_db
“stock values.db”已經(jīng)打開,您無需再次打開它。相反,您可以一次打開多個(gè)數(shù)據(jù)庫,隨意寫入每個(gè)數(shù)據(jù)庫,并在程序終止時(shí)讓Python關(guān)閉它們。例如,您可以為每個(gè)符號保留一個(gè)單獨(dú)的名稱數(shù)據(jù)庫,并將以下內(nèi)容附加到前面的代碼中:
## assuming shelve is already imported stocknames_db = shelve.open('stocknames.db') objectname_ibm = Names.ibm() stocknames_db['ibm'] = objectname_ibm objectname_vmw = Names.vmw() stocknames_db['vmw'] = objectname_vmw objectname_db = Names.db() stocknames_db['db'] = objectname_db
請注意,數(shù)據(jù)庫文件的名稱或后綴的任何更改都構(gòu)成不同的文件,因此構(gòu)成不同的數(shù)據(jù)庫。
結(jié)果是包含給定值的第二個(gè)數(shù)據(jù)庫文件。與大多數(shù)以自定格式編寫的文件不同,擱置的數(shù)據(jù)庫以二進(jìn)制形式保存。
將數(shù)據(jù)寫入文件后,可以隨時(shí)調(diào)用。如果要在以后的會(huì)話中還原數(shù)據(jù),請重新打開該文件。如果它是同一個(gè)會(huì)話,只需調(diào)用該值; 擱置數(shù)據(jù)庫文件以讀寫模式打開。以下是實(shí)現(xiàn)此目的的基本語法:
import shelve database = shelve.open(filename.suffix) object = database['key']
因此,前面示例中的示例將顯示為:
import shelve stockname_file = shelve.open('stocknames.db') stockname_ibm = stockname_file['ibm'] stockname_db = stockname_file['db']
擱置的考慮因素
請務(wù)必注意,在關(guān)閉數(shù)據(jù)庫之前(或直到程序終止),數(shù)據(jù)庫將保持打開狀態(tài)。因此,如果您正在編寫任何大小的程序,則需要在使用它之后關(guān)閉數(shù)據(jù)庫。否則,整個(gè)數(shù)據(jù)庫(不僅僅是您想要的值)位于內(nèi)存中并消耗計(jì)算資源。
要關(guān)閉擱置文件,請使用以下語法:
database.close()
如果上面的所有代碼示例都合并到一個(gè)程序中,那么我們將打開兩個(gè)數(shù)據(jù)庫文件并消耗內(nèi)存。因此,在閱讀上一個(gè)示例中的股票名稱之后,您可以依次關(guān)閉每個(gè)數(shù)據(jù)庫,如下所示:
stockvalues_db.close() stocknames_db.close() stockname_file.close()
相關(guān)文章
用Python生成N層的楊輝三角的實(shí)現(xiàn)方法
這篇文章主要介紹了用Python生成N層的楊輝三角的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04Python批量上傳文件信息到服務(wù)器的實(shí)現(xiàn)示例
在進(jìn)行軟件測試的過程中,經(jīng)常會(huì)需要準(zhǔn)備一批數(shù)據(jù),本文主要介紹了Python批量上傳文件信息到服務(wù)器的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12python實(shí)現(xiàn)動(dòng)態(tài)規(guī)劃算法的示例代碼
本文主要介紹了python實(shí)現(xiàn)動(dòng)態(tài)規(guī)劃算法的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02Python區(qū)塊鏈創(chuàng)建Genesis Block教程
這篇文章主要為大家介紹了Python區(qū)塊鏈創(chuàng)建Genesis Block教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05