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:
## 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 ()