Shelve是一個功能強大的Python模塊,用于對象持久性。擱置對象時,必須指定一個用于識別對象值的鍵。通過這種方式,擱置文件成為存儲值的數(shù)據(jù)庫,其中任何一個都可以隨時訪問。
Python中擱置的示例代碼
要擱置對象,首先導入模塊,然后按如下方式分配對象值:
import shelvedatabase = shelve.open(filename.suffix)object = Object()database['key'] = object
例如,如果要保留股票數(shù)據(jù)庫,可以調整以下代碼:
import shelvestockvalues_db = shelve.open('stockvalues.db')object_ibm = Values.ibm()stockvalues_db['ibm'] = object_ibmobject_vmw = Values.vmw()stockvalues_db['vmw'] = object_vmwobject_db = Values.db()stockvalues_db['db'] = object_db“stock values.db”已經打開,您無需再次打開它。相反,您可以一次打開多個數(shù)據(jù)庫,隨意寫入每個數(shù)據(jù)庫,并在程序終止時讓Python關閉它們。例如,您可以為每個符號保留一個單獨的名稱數(shù)據(jù)庫,并將以下內容附加到前面的代碼中:
## assuming shelve is already importedstocknames_db = shelve.open('stocknames.db')objectname_ibm = Names.ibm()stocknames_db['ibm'] = objectname_ibmobjectname_vmw = Names.vmw()stocknames_db['vmw'] = objectname_vmwobjectname_db = Names.db()stocknames_db['db'] = objectname_db請注意,數(shù)據(jù)庫文件的名稱或后綴的任何更改都構成不同的文件,因此構成不同的數(shù)據(jù)庫。
結果是包含給定值的第二個數(shù)據(jù)庫文件。與大多數(shù)以自定格式編寫的文件不同,擱置的數(shù)據(jù)庫以二進制形式保存。
將數(shù)據(jù)寫入文件后,可以隨時調用。如果要在以后的會話中還原數(shù)據(jù),請重新打開該文件。如果它是同一個會話,只需調用該值; 擱置數(shù)據(jù)庫文件以讀寫模式打開。以下是實現(xiàn)此目的的基本語法:
import shelvedatabase = shelve.open(filename.suffix)object = database['key']
因此,前面示例中的示例將顯示為:
import shelvestockname_file = shelve.open('stocknames.db')stockname_ibm = stockname_file['ibm']stockname_db = stockname_file['db']擱置的考慮因素
請務必注意,在關閉數(shù)據(jù)庫之前(或直到程序終止),數(shù)據(jù)庫將保持打開狀態(tài)。因此,如果您正在編寫任何大小的程序,則需要在使用它之后關閉數(shù)據(jù)庫。否則,整個數(shù)據(jù)庫(不僅僅是您想要的值)位于內存中并消耗計算資源。
要關閉擱置文件,請使用以下語法:
database.close()
如果上面的所有代碼示例都合并到一個程序中,那么我們將打開兩個數(shù)據(jù)庫文件并消耗內存。因此,在閱讀上一個示例中的股票名稱之后,您可以依次關閉每個數(shù)據(jù)庫,如下所示:
stockvalues_db.close()stocknames_db.close()stockname_file.close()
新聞熱點
疑難解答