Bruke Shelve for å redde objekter i Python

click fraud protection

Shelve er en kraftig Python-modul for objektets utholdenhet. Når du skrinlegger et objekt, må du tilordne en nøkkel som objektverdien er kjent med. På denne måten blir hyllefilen en database med lagrede verdier, som du kan få tilgang til når som helst.

Eksempelkode for Shelve i Python

For å skrinlegge et objekt, importerer du først modulen og tilordner deretter objektverdien som følger:

 importhylle 
database = shelve.open (filename.suffix)
objekt = objekt ()
database ['nøkkel'] = objekt

Hvis du for eksempel vil føre en database med aksjer, kan du tilpasse følgende kode:

 importhylle 
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 = Values.db ()
stockvalues_db ['db'] = object_db

En "aksjeverdier.db" er allerede åpnet, du trenger ikke å åpne den igjen. Snarere kan du åpne flere databaser om gangen, skrive til hver når som helst og la være Python for å lukke dem når programmet avsluttes. Du kan for eksempel føre en egen database med navn for hvert symbol, ved å legge til følgende til foregående kode:

instagram viewer

 ## forutsatt at hyllen allerede er importert 
stocknames_db = shelve.open ('stocknames.db')
objectname_ibm = Navn.ibm ()
stocknames_db ['ibm'] = objektnavn_ibm
objectname_vmw = Navn.vmw ()
stocknames_db ['vmw'] = objektnavn_vmw
objectname_db = Names.db ()
stocknames_db ['db'] = objektnavn_db

Merk at enhver endring i navnet eller endelsen av databasefilen utgjør en annen fil og derfor en annen database.

Resultatet er en andre databasefil som inneholder de gitte verdiene. I motsetning til de fleste filer skrevet i selvutformede formater, er hyllede databaser lagrede i binær form.

Etter at dataene er skrevet til filen, kan de huskes når som helst. Hvis du vil gjenopprette dataene i en senere økt, åpner du filen på nytt. Hvis det er den samme økten, er det bare å huske verdien; skrinlegge databasefiler åpnes i lese-skrivemodus. Følgende er den grunnleggende syntaks for å oppnå dette:

 importhylle 
database = shelve.open (filename.suffix)
object = database ['nøkkel']

Så en prøve fra foregående eksempel vil lese:

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

Hensyn med Shelve

Det er viktig å merke seg at databasen forblir åpen til du lukker den (eller til programmet avsluttes). Derfor, hvis du skriver et program av en hvilken som helst størrelse, vil du lukke databasen etter å ha jobbet med den. Ellers sitter hele databasen (ikke bare verdien du vil) i minnet og bruker databehandlingsressurser.

Bruk følgende syntaks for å lukke en hyllefil:

 database.close () 

Hvis alle kodeeksemplene ovenfor ble inkorporert i ett program, ville vi ha to databasefiler åpne og forbruker minne på dette tidspunktet. Så etter å ha lest aksjenavnene i forrige eksempel, kan du deretter lukke hver database på sin side som følger:

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

instagram story viewer