Shelve je výkonný modul Pythonu na vytrvalosť objektov. Keď odkladáte objekt, musíte priradiť kľúč, ktorým je známa hodnota objektu. Týmto spôsobom sa súbor shelve stane databázou uložených hodnôt, ku ktorej je kedykoľvek možné pristupovať.
Vzorový kód pre Shelve v Pythone
Ak chcete odložiť objekt, najskôr naimportujte modul a potom hodnotu objektu priraďte takto:
import políc
database = shelve.open (filename.suffix)
object = Object ()
database ['key'] = objekt
Ak si chcete napríklad ponechať databázu zásob, môžete upraviť nasledujúci kód:
import políc
stockvalues_db = shelve.open ('stockvalues.db')
object_ibm = Values.ibm ()
stockvalues_db ['ibm'] = object_ibm
object_vmw = Values.vmw ()
stockvalues_db ['vmw'] = object_vmw
object_db = Hodnoty.db ()
stockvalues_db ['db'] = object_db
Súbor „stock values.db“ je už otvorený, nemusíte ho znova otvárať. Namiesto toho môžete otvoriť viac databáz naraz, zapísať do každej z nich ľubovoľne a odísť krajta zatvorte ich po ukončení programu. Mohli by ste si napríklad ponechať samostatnú databázu mien pre každý symbol a k predchádzajúcemu kódu pripojiť nasledujúce:
## za predpokladu, že je už importovaný
stocknames_db = shelve.open ('stocknames.db')
objectname_ibm = Names.ibm ()
stocknames_db ['ibm'] = objectname_ibm
objectname_vmw = Names.vmw ()
stocknames_db ['vmw'] = objectname_vmw
objectname_db = Names.db ()
stocknames_db ['db'] = objectname_db
Všimnite si, že každá zmena názvu alebo prípony databázového súboru predstavuje iný súbor, a teda inú databázu.
Výsledkom je druhý databázový súbor obsahujúci dané hodnoty. Na rozdiel od väčšiny súborov napísaných v štýloch s vlastným štýlom, chránené databázy sú uložené v binárnej forme.
Po zapísaní údajov do súboru je možné ich kedykoľvek vyvolať. Ak chcete údaje obnoviť v neskoršej relácii, znova otvorte súbor. Ak je to rovnaká relácia, jednoducho vyvolajte hodnotu; SHELVE databázové súbory sú otvorené v režime čítania a zápisu. Základnou syntaxou na dosiahnutie tohto cieľa je:
import políc
database = shelve.open (filename.suffix)
object = database ['key']
Vzorka z predošlého príkladu by teda čítala:
import políc
stockname_file = shelve.open ('stocknames.db')
stockname_ibm = stockname_file ['ibm']
stockname_db = stockname_file ['db']
Úvahy s Shelve
Je dôležité si uvedomiť, že databáza zostáva otvorená, kým ju nezatvoríte (alebo kým sa neskončí program). Preto, ak píšete program akejkoľvek veľkosti, po práci s ním chcete databázu zatvoriť. Inak celá databáza (nielen požadovaná hodnota) sedí v pamäti a spotrebuje výpočtové zdroje.
Ak chcete zatvoriť súbor shelve, použite nasledujúcu syntax:
database.close ()
Keby boli všetky vyššie uvedené príklady kódu začlenené do jedného programu, mali by sme teraz otvorené dva databázové súbory a náročnú pamäť. Po prečítaní názvov zásob v predchádzajúcom príklade by ste potom mohli každú databázu postupne zavrieť takto:
stockvalues_db.close ()
stocknames_db.close ()
stockname_file.close ()