Uporaba police za shranjevanje predmetov v Python-u

Shelve je močan Python modul za obstojnost predmeta. Ko shranite predmet, morate dodeliti ključ, po katerem je znana vrednost predmeta. Na ta način datoteka polic postane zbirka shranjenih vrednosti, do katere koli lahko dostopate kadar koli.

Vzorec kode za polico v Pythonu

Če želite shraniti predmet, najprej uvozite modul in mu nato dodelite vrednost na naslednji način:

 uvozne police 
database = shelve.open (ime datoteke.suffix)
objekt = Objekt ()
baza podatkov ['ključ'] = predmet

Če želite na primer obdržati bazo podatkov o zalogah, lahko prilagodite to kodo:

 uvozne police 
stockvalues_db = shelve.open ('stockvalues.db')
object_ibm = Vrednosti.ibm ()
stockvalues_db ['ibm'] = predmet_ibm
object_vmw = Vrednosti.vmw ()
stockvalues_db ['vmw'] = predmet_vmw
object_db = Values.db ()
stockvalues_db ['db'] = predmet_db

»Stock values.db« je že odprt, ni vam ga treba znova odpreti. Namesto tega lahko naenkrat odprete več baz podatkov, vsakemu pišete po volji in zapustite Python da jih zaprete, ko program preneha. Na primer, za vsak simbol lahko hranite ločeno bazo imen, pri čemer k prejšnji kodi dodate naslednje:

instagram viewer

 ## ob predpostavki, da je polica že uvožena 
stocknames_db = shelve.open ('stocknames.db')
objectname_ibm = Names.ibm ()
stocknames_db ['ibm'] = ime objekta_ibm
objectname_vmw = Names.vmw ()
stocknames_db ['vmw'] = ime objekta_vmw
objectname_db = Names.db ()
stocknames_db ['db'] = ime objekta_db

Upoštevajte, da vsaka sprememba imena ali priponke datoteke baze podatkov pomeni drugačno datoteko in s tem tudi drugo bazo podatkov.

Rezultat je druga datoteka baze podatkov, ki vsebuje dane vrednosti. Za razliko od večine datotek, napisanih v samooblikovanih oblikah, so shranjene baze podatkov shranjeno v binarni obliki.

Ko so podatki zapisani v datoteko, jih je mogoče kadar koli priklicati. Če želite podatke obnoviti v poznejši seji, datoteko znova odprete. Če gre za isto sejo, preprosto prikličite vrednost; polica datoteke baze podatkov se odprejo v načinu branja in pisanja. Spodaj je osnovna sintaksa za dosego tega:

 uvozne police 
database = shelve.open (ime datoteke.suffix)
object = baza podatkov ['ključ']

Torej bi vzorec iz prejšnjega primera glasil:

 uvozne police 
stockname_file = shelve.open ('stocknames.db')
stockname_ibm = stockname_file ['ibm']
stockname_db = stockname_file ['db']

Premisleki s polico

Pomembno je upoštevati, da baza podatkov ostane odprta, dokler je ne zaprete (ali dokler se program ne ustavi). Če torej pišete program katere koli velikosti, želite po delu z njim zapreti bazo podatkov. V nasprotnem primeru celotna baza podatkov (ne le želene vrednosti) sedi v pomnilniku in porabi računalniški viri.

Datoteko na policah zaprete z naslednjo sintakso:

 database.close () 

Če bi bili vsi zgornji primeri kode vključeni v en program, bi imeli na tej točki dve datoteki baze podatkov odprti in porabljata pomnilnik. Ko ste prebrali imena zalog v prejšnjem primeru, lahko nato vsako bazo podatkov zaprete po vrsti:

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