Hyll og sylteagurk
Hyllemodulen bruker Pythons “Pickle” -modul under for å serialisere dataene. Hovedforskjellen mellom hylle- og pickle -moduler er at hyllen kan brukes til å knytte serialiserte objekter med nøkler. Disse nøklene kan brukes som identifikatorer i koden din, og du kan henvise til dem for å få det serialiserte objektet. Pickle derimot gir ikke en innfødt måte å lagre serialiserte data i nøkkelverdipar, uten noen løsninger eller tilpasset kode. Dermed er Shelve mer en bekvemmelighetsmodul for enkel serialisering av Python -objekter og kan brukes til å lage enkle databaser som inneholder serialiserte data.
Grunnleggende bruk og syntaks
Du kan åpne en databasefil ved å bruke den "åpne" metoden som er tilgjengelig i hyllemodulen. Denne metoden kan brukes som en kontekstbehandler slik at den filen er riktig lukket når metodesamtalen er ferdig. Her er en kodeeksempel:
Importer hyllDen første uttalelsen importerer hovedhyllemodulen til Python -programmet. Deretter bruker du "med hyllen.Åpen "metodeanrop og kontekstbehandler,“ Test.DB ”-filen åpnes som“ DB ”i skrivemodus. Filen kan ha noe navn og utvidelse. De to siste uttalelsene brukes til å lage to nye nøkkelverdipar ved hjelp av Python Dictionary-lignende syntaks. Disse nøkkelverdiparene lagres deretter i testen.DB -fil i serialisert form.
Etter å ha utført kodeprøven ovenfor, hvis du åpner testen.DB -fil I en tekstredigerer, bør du se noen data som ligner på dette:
Som du kan se, er ikke dataene som er lagret i filen i menneskelig lesbar form. Imidlertid, hvis du åpner denne filen ved hjelp av hyllen, vil du kunne hente nøkkelverdipar i Python-programmet ditt. Her er en kodeeksempel:
Importer hyllNøkkelverdipar serialisert etter hylla er identiske med et ordbokstypeobjekt i Python, og de støtter alle metodene sine. Så du kan henvise til objekter ved å levere en nøkkel i firkantede seler. I de to siste utsagnene blir verdien av begge tastene hentet ved hjelp av ordboklignende syntaks. Etter å ha kjørt ovennevnte kodeprøve, bør du få følgende utdata:
50Merk at Python automatisk velger et passende databasefilformat for Shelve, og tar hensyn til operativsystemet som programmet blir utført. Det påvirker imidlertid ikke bruken av hyllemodulen og funksjonaliteten til objekter serialisert ved hjelp av den.
Få alle nøkkelverdipar fra en databasefil opprettet ved hjelp av hylla
For å få alle nøkler og verdipar, må du kalle "nøkler" og "verdier" -metoder, akkurat som du ville gjort med et ordbokstypeobjekt i Python. Her er en kodeeksempel:
Importer hyllSom du kan se i ovennevnte kodeprøve, er "elementer", "nøkler" og "verdier" metoder blitt kalt for å hente nøkler og verdier. Disse nøklene og verdiene er objekter av hyllinger, så du må konvertere dem til en liste eller andre iterable for å få sine faktiske verdier. Etter å ha kjørt ovennevnte kodeprøve, bør du få følgende utdata:
[('Apples', 50), ('appelsiner', 80)]Merk at hvis du bare vil iterere over nøkler og verdier, kan du gjøre det ved hjelp av Loop eller noen annen uttalelse uten å konvertere nøkler og verdier til en Python -liste eller noe annet slikt objekt.
Du kan serialisere funksjoner og klasser ved hjelp av hylla
Du kan serialisere et hvilket som helst Python -objekt ved hjelp av hyllemodul, til og med funksjoner og klasser. Her er et eksempel som illustrerer serialisering av en funksjon, henter den tilbake og ringer den til å gjøre noen beregninger.
Importer hyllEn ny funksjon kalt “Square” er blitt definert. Det beregner kvadratet på et tall og returnerer det. Deretter blir denne funksjonen serialisert ved hjelp av hylla og lagres i testen.DB -databasefil. Den serialiserte funksjonen blir deretter lest tilbake i den "firkantede" variabelen. Siden kvadratvariabelen nå er en forekomst av den firkantede funksjonen som er definert tidligere, kan du ringe den for å beregne kvadratet på et tall.
Etter å ha kjørt ovennevnte kodeprøve, bør du få følgende utdata:
25Konklusjon
Serialisering er en prosess med å lagre Python -objekter i en databasefil slik at de kan hentes i en form som er nøyaktig det samme som hvordan de opprinnelig ble definert før serialisering. Dette lar deg lagre komplekse Python -objekter i strukturert format. Hyllemodulen bruker Pickle -modulen for å lagre og hente serialiserte Python -objekter. Den bruker nøkkelverdi-parstruktur for å håndtere serialiserte objekter, noe som gjør det lettere å administrere dem.