Utilizarea raftului pentru a salva obiecte în Python

Shelve este un modul Python puternic pentru persistența obiectului. Când stocați un obiect, trebuie să atribuiți o cheie prin care se cunoaște valoarea obiectului. În acest fel, fișierul raft devine o bază de date cu valori stocate, la care se poate accesa oricând.

Cod de eșantion pentru raft în Python

Pentru a proteja un obiect, importați mai întâi modulul și apoi atribuiți valoarea obiectului după cum urmează:

 raft de import 
bază de date = shelve.open (nume de fișier.suffix)
obiect = Obiect ()
baza de date ['cheie'] = obiect

Dacă doriți să păstrați o bază de date cu stocuri, de exemplu, puteți adapta următorul cod:

 raft de import 
stockvalues_db = shelve.open ('stockvalues.db')
object_ibm = Valori.ibm ()
stockvalues_db ['ibm'] = obiect_ibm
object_vmw = Values.vmw ()
stockvalues_db ['vmw'] = obiect_vmw
object_db = Valori.db ()
stockvalues_db ['db'] = obiect_db

Un „stoc valori.db” este deja deschis, nu trebuie să îl deschideți din nou. Mai degrabă, puteți deschide mai multe baze de date simultan, puteți scrie fiecare în voie și plecați

instagram viewer
Piton pentru a le închide când programul se încheie. Puteți, de exemplu, să păstrați o bază de date separată de nume pentru fiecare simbol, adăugând următoarele la codul precedent:

 ## presupunând că raftul este deja importat 
stocknames_db = shelve.open ('stocknames.db')
objectname_ibm = Nume.ibm ()
stocknames_db ['ibm'] = nume obiect_ibm
objectname_vmw = Nume.vmw ()
stocknames_db ['vmw'] = nume obiect_vmw
objectname_db = Nume.db ()
stocknames_db ['db'] = nume obiect_db

Rețineți că orice modificare a numelui sau a sufixului fișierului bazei de date constituie un fișier diferit și, prin urmare, o bază de date diferită.

Rezultatul este un al doilea fișier de bază de date care conține valorile date. Spre deosebire de majoritatea fișierelor scrise în formele de sine stătătoare, bazele de date protejate sunt salvată în formă binară.

După ce datele sunt scrise în fișier, acestea pot fi reamintite în orice moment. Dacă doriți să restaurați datele într-o sesiune ulterioară, redeschideți fișierul. Dacă este aceeași sesiune, amintiți-vă pur și simplu de valoare; rafturi fișiere de bază de date sunt deschise în modul citire-scriere. Următoarea este sintaxa de bază pentru realizarea acestui lucru:

 raft de import 
bază de date = shelve.open (nume de fișier.suffix)
object = baza de date ['cheie']

Deci, un eșantion din exemplul precedent ar citi:

 raft de import 
stockname_file = shelve.open ('stocknames.db')
stockname_ibm = stockname_file ['ibm']
stockname_db = nume nume_file ['db']

Considerații cu raftul

Este important să rețineți că baza de date rămâne deschisă până când o închideți (sau până când programul se încheie). Prin urmare, dacă scrieți un program de orice dimensiune, doriți să închideți baza de date după ce ați lucrat cu acesta. În caz contrar, întreaga bază de date (nu doar valoarea dorită) stă în memorie și consumă resurse de calcul.

Pentru a închide un fișier raft, utilizați următoarea sintaxă:

 database.close () 

Dacă toate exemplele de cod de mai sus ar fi fost încorporate într-un singur program, am avea două fișiere de bază deschise și consumatoare de memorie în acest moment. Așadar, după ce ai citit numele stocurilor din exemplul precedent, poți apoi să închizi pe rând fiecare bază de date după cum urmează:

 stockvalues_db.close () 
stocknames_db.close ()
stockname_file.close ()

instagram story viewer