Shelve är en kraftfull Python-modul för objektets uthållighet. När du hyllar ett objekt måste du tilldela en nyckel med vilken objektvärdet är känt. På detta sätt blir hyllfilen en databas med lagrade värden, vilka som helst kan nås när som helst.
För att hylla ett objekt importerar du först modulen och tilldelar sedan objektvärdet enligt följande:
import hyllan
databas = shelf.open (filename.suffix)
objekt = objekt ()
databas ['key'] = objekt
Om du till exempel vill behålla en databas med lager kan du anpassa följande kod:
import hyllan
stockvalues_db = shelfve.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
Ett "lagervärden.db" har redan öppnats, du behöver inte öppna det igen. Snarare kan du öppna flera databaser i taget, skriva till var och en och lämna Python för att stänga dem när programmet avslutas. Du kan till exempel behålla en separat databas med namn för varje symbol och lägga till följande till föregående kod:
## antar att hyllan redan är importerad
stocknames_db = shelve.open ('stocknames.db')
objectname_ibm = Names.ibm ()
stocknames_db ['ibm'] = objektnamn_ibm
objectname_vmw = Namn.vmw ()
stocknames_db ['vmw'] = objektnamn_vmw
objectname_db = Names.db ()
stocknames_db ['db'] = objektnamn_db
Observera att alla ändringar i databasfilens namn eller suffix utgör en annan fil och därför en annan databas.
Resultatet är en andra databasfil som innehåller de givna värdena. Till skillnad från de flesta filer som är skrivna i självformatformat, sparas databaser i binär form.
När uppgifterna har skrivits till filen kan de återkallas när som helst. Om du vill återställa data under en senare session öppnar du filen igen. Om det är samma session ska du bara återkalla värdet. hylldatabasfiler öppnas i läs-skrivläge. Följande är den grundläggande syntaxen för att uppnå detta:
import hyllan
databas = shelf.open (filename.suffix)
object = databas ['nyckel']
Så ett exempel från föregående exempel skulle läsa:
import hyllan
stockname_file = shelve.open ('stocknames.db')
stockname_ibm = stockname_file ['ibm']
stockname_db = stockname_file ['db']
Det är viktigt att notera att databasen förblir öppen tills du stänger den (eller tills programmet avslutas). Därför, om du skriver ett program av någon storlek, vill du stänga databasen efter att ha arbetat med den. Annars sitter hela databasen (inte bara det värde du vill) i minnet och konsumerar datoressurser.
För att stänga en hyllfil, använd följande syntax:
database.close ()
Om alla kodexemplen ovan införlivades i ett program skulle vi ha två databasfiler öppna och förbrukande minne vid denna punkt. Så efter att ha läst lagernamnen i föregående exempel kan du sedan stänga varje databas i tur och ordning på följande sätt:
stockvalues_db.close ()
stocknames_db.close ()
stockname_file.close ()