使用Shelve將對象保存在Python中
Shelve是用于對象持久性的強大Python模塊。當您擱置對象時,必須分配一個密鑰,通過該密鑰可以知道對象值。通過這種方式,shelve文件成為存儲值的數(shù)據(jù)庫,可以隨時訪問任何存儲值。
Python中Shelve的示例代碼
要擱置對象,首先導入模塊,然后分配對象值,如下所示:
導入貨架
數(shù)據(jù)庫=shelve.open(文件名)
object=object()
database['key']=object
例如,如果要保存庫存數(shù)據(jù)庫,可以調(diào)整以下代碼:
導入貨架
庫存值?db=shelve.open(&)39;stockvalues.db')
對象?ibm=值.ibm()
stockvalues?udB['ibm']=對象?ibm
對象?vmw=Values.vmw()
stockvalues?db['vmw']=對象?vmw
對象?db=值db()
stockvalues?db['db']=對象?db
A"股票值.db"已經(jīng)打開,您不需要'需要再次打開它。相反,您可以一次打開多個數(shù)據(jù)庫,隨意寫入每個數(shù)據(jù)庫,并在程序終止時讓Python關閉它們。例如,您可以為每個符號保留一個單獨的名稱數(shù)據(jù)庫,并在前面的代碼中附加以下內(nèi)容:
###假設貨架已經(jīng)導入
庫存名稱?db=shelve.open(&)39;stockname.db')
objectname?uIBM=姓名()
stocknames?db['ibm']=objectname?ibm
objectname?vmw=姓名.vmw()
stockname?db['vmw']=objectname_vmw
objectname_db=名稱()
stockname?db['db']=objectname?db
請注意,數(shù)據(jù)庫文件的名稱或后綴的任何更改都構(gòu)成不同的文件,因此構(gòu)成不同的數(shù)據(jù)庫。
健康教育知識測試題及答案
結(jié)果是包含給出的第二個數(shù)據(jù)庫文件n值。與大多數(shù)以自我樣式格式編寫的文件不同,擱置的數(shù)據(jù)庫以二進制形式保存。
數(shù)據(jù)寫入文件后,可以隨時召回。如果要在以后的會話中恢復數(shù)據(jù),請重新打開該文件。如果是同一會話,只需召回該值;shelve數(shù)據(jù)庫文件以讀寫模式打開。以下是實現(xiàn)此目的的基本語法:
導入貨架
數(shù)據(jù)庫=shelve.open(文件名)
對象=數(shù)據(jù)庫[#39;鍵']
因此,前面示例中的示例將讀取:
導入貨架
stockname?file=shelve.open(&)39;stockname.db')
stockname_ibm=stockname_file['ibm']
stockname_db=stockname#file['db']
考慮擱置
重要的是要注意,數(shù)據(jù)庫在關閉之前(或直到程序終止)保持打開狀態(tài)。因此,如果您正在編寫任何大小的程序,則需要在使用它后關閉數(shù)據(jù)庫。否則,整個數(shù)據(jù)庫(不僅僅是您想要的值)位于內(nèi)存中并消耗計算資源。
要關閉擱置文件,請使用以下語法:
數(shù)據(jù)庫()
如果上面的所有代碼示例都合并到一個程序中,那么此時我們將打開兩個數(shù)據(jù)庫文件并消耗內(nèi)存。因此,在上一個示例中讀取了股票名稱之后,您可以依次關閉每個數(shù)據(jù)庫,如下所示:
庫存值_關閉()
庫存_關閉()
庫存_文件關閉()