Riiuli kasutamine objektide salvestamiseks Pythonis

Riiul on võimas Pythoni moodul objektide püsivuse tagamiseks. Objekti riiulisse pannes peate määrama võtme, mille abil objekti väärtus teada saab. Sel moel saab riiulifail salvestatud väärtuste andmebaasiks, millele saab igal ajal juurde pääseda.

Pythoni riiuli näidiskood

Objekti riiulisse importimiseks kõigepealt moodul ja määrake objekti väärtus järgmiselt:

 impordi riiul 
andmebaas = shelve.open (failinimi.suffix)
objekt = objekt ()
andmebaas ['võti'] = objekt

Näiteks kui soovite pidada varude andmebaasi, saate kohandada järgmist koodi:

 impordi riiul 
stockvalues_db = shelve.open ('stockvalues.db')
object_ibm = Väärtused.ibm ()
stockvalues_db ['ibm'] = objekt_ibm
object_vmw = Väärtused.vmw ()
stockvalues_db ['vmw'] = objekt_vmw
object_db = Väärtused.db ()
stockvalues_db ['db'] = objekt_db

Aktsiaväärtused.db on juba avatud, te ei pea seda uuesti avama. Pigem võite avada mitu andmebaasi korraga, kirjutada mõlemale soovi korral ja lahkuda Python nende sulgemiseks programmi lõppedes. Näiteks võiksite pidada iga sümboli jaoks eraldi nimeandmete andmebaasi, lisades eelmisele koodile järgmised andmed:

instagram viewer

 ## eeldusel, et riiul on juba imporditud 
stocknames_db = shelve.open ('stocknames.db')
objectname_ibm = Nimed.ibm ()
stocknames_db ['ibm'] = objekti nimi_ibm
objectname_vmw = Nimed.vmw ()
stocknames_db ['vmw'] = objekti nimi_vmw
objektinimi_db = nimed.db ()
stocknames_db ['db'] = objekti nimi_db

Pange tähele, et andmebaasifaili nime või järelliide muudatused moodustavad erineva faili ja järelikult ka erineva andmebaasi.

Tulemuseks on teine ​​andmebaasifail, mis sisaldab antud väärtusi. Erinevalt enamikust failidest, mis on kirjutatud isekujundusvormingus, on riiuliga andmebaasid salvestatud binaarses vormis.

Pärast andmete faili kirjutamist saab neid igal ajal tagasi kutsuda. Kui soovite andmeid hiljem taastada, siis avage fail uuesti. Kui see on sama seanss, tuletage väärtus lihtsalt meelde; riiul andmebaasifailid avatakse lugemise ja kirjutamise režiimis. Järgnev on põhiline süntaks selle saavutamiseks:

 impordi riiul 
andmebaas = shelve.open (failinimi.suffix)
objekt = andmebaas ['võti']

Eelnevast näitest võiks lugeda järgmist:

 impordi riiul 
stockname_file = shelve.open ('stocknames.db')
stockname_ibm = stockname_file ['ibm']
stockname_db = stockname_file ['db']

Kaalutlused riiuliga

Oluline on märkida, et andmebaas jääb avatuks seni, kuni selle sulgete (või kuni programm lõpeb). Seega, kui kirjutate mis tahes suurusega programmi, soovite andmebaasi pärast sellega töötamist sulgeda. Vastasel juhul istub kogu andmebaas (mitte ainult soovitud väärtus) mällu ja tarbib arvuti ressursid.

Riiulifaili sulgemiseks kasutage järgmist süntaksi:

 andmebaas.klose () 

Kui kõik ülaltoodud koodinäited ühendataks ühte programmi, oleks meil kaks andmebaasifaili avatud ja praegusel hetkel mälu tarbivad. Nii et pärast eelmises näites olevate aktsiate nimede lugemist saaksite sulgeda iga andmebaasi järgmiselt:

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