Sådan skrives en simpel legetøjsdatabase i Python inden for få minutter

MySQL, PostgreSQL, Oracle, Redis og mange flere, du bare navngive det - databaser er et virkelig vigtigt stykke teknologi i udviklingen af ​​den menneskelige civilisation. I dag kan vi se, hvor værdifulde data er, og så at holde dem sikre og stabile er det, hvor databasen kommer ind!

Så vi kan se, hvor vigtige databaser også er. I ganske lang tid tænkte jeg på at oprette My Own Toy Database bare for at forstå, lege rundt og eksperimentere med den. Som Richard Feynman sagde:

”Hvad jeg ikke kan skabe, forstår jeg ikke.”

Så uden yderligere snak skal vi hoppe ind i den sjove del: kodning.

Lad os starte kodning ...

Til denne legetøjsdatabase bruger vi Python (min favorit ). Jeg navngav denne database FooBarDB (jeg kunne ikke finde noget andet navn ), men du kan kalde det, hvad du vil!

Så lad os først importere nogle nødvendige Python-biblioteker, der allerede er tilgængelige i Python Standard Library:

import json
import os

Ja, vi har kun brug for disse to biblioteker! Vi har brug for json, da vores database vil være baseret på JSON, og os for nogle stierelaterede ting.

Lad os definere FoobarDB i hovedklassen med nogle temmelig basale funktioner, som jeg vil forklare nedenfor.

klasse FoobarDB (objekt):
    def __init __ (self, location):
        self.location = os.path.expanduser (placering)
        self.load (self.location)

    def belastning (selv, placering):
        hvis os.path.exists (placering):
            self._load ()
        andet:
            self.db = {}
        vende tilbage sandt

    def _load (selv):
        self.db = json.load (åben (self.location, "r"))

    def dumpdb (selv):
        prøve:
            json.dump (self.db, open (self.location, "w +"))
            vende tilbage sandt
        undtagen:
            return False

Her definerede vi vores hovedklasse med en __init__-funktion. Hver gang vi opretter en Foobar-database, behøver vi kun at placere databasens placering. I den første __init__-funktion tager vi placeringsparameteren og erstatter ~ eller ~ bruger med brugerens hjemmekatalog for at få det til at fungere bestemt måde. Og til sidst skal du lægge den i self.location-variabel for at få adgang til den senere på de samme klassefunktioner. I sidste ende kalder vi lastfunktionen, der passerer self.location, som et argument.

. . . .
    def belastning (selv, placering):
        hvis os.path.exists (placering):
            self._load ()
        andet:
            self.db = {}
        vende tilbage sandt
. . . .

I den næste belastningsfunktion tager vi placeringen af ​​databasen som en parameter. Kontroller derefter, om databasen findes eller ej. Hvis den findes, indlæser vi den med funktionen _load () (forklaret nedenfor). Ellers opretter vi et tomt JSON-objekt i hukommelsen. Og til sidst skal du vende tilbage ved succes.

. . . .

    def _load (selv):
        self.db = json.load (åben (self.location, "r"))
. . . .

I _load-funktionen åbner vi bare databasefilen fra det sted, der er gemt i self.location. Derefter omdanner vi det til et JSON-objekt og indlæser det i self.db-variabel.

. . . .
    def dumpdb (selv):
        prøve:
            json.dump (self.db, open (self.location, "w +"))
            vende tilbage sandt
        undtagen:
            return False

. . . .

Og til sidst dumpdb-funktionen: dens navn siger, hvad den gør. Det tager databasen i hukommelsen (faktisk et JSON-objekt) fra variablen self.db og gemmer den i databasefilen! Det returnerer sandt, hvis det gemmes med succes, ellers returnerer falsk.

Gør det lidt mere anvendeligt ...

Vent et øjeblik! En database er ubrugelig, hvis den ikke kan gemme og hente data, ikke? Lad os gå og tilføje dem også ...

. . . .
    def sæt (selv, nøgle, værdi):
        prøve:
            self.db [str (nøgle)] = værdi
            self.dumpdb ()
            vende tilbage sandt
        undtagen undtagelse som e:
            print ("[X] Fejl ved at gemme værdier i databasen:" + str (e))
            return False

    def get (self, key):
        prøve:
            return self.db [key]
        undtagen KeyError:
            print ("Ingen værdi findes for" + str (nøgle))
            return False

    def slette (selv, nøgle):
        hvis ikke indtastes self.db:
            return False
        del self.db [nøgle]
        self.dumpdb ()
        vende tilbage sandt
. . . .

Den indstillede funktion er at tilføje data til databasen. Da vores database er en simpel nøgleværdibaseret database, tager vi kun en nøgle og værdi som et argument.

Først vil vi forsøge at tilføje nøglen og værdien til databasen og derefter gemme databasen. Hvis alt går rigtigt, vender det sandt tilbage. Ellers udskriver den en fejlmeddelelse og returnerer falsk. (Vi ønsker ikke, at det skal gå ned og slette vores data, hver gang der opstår en fejl ).

. . . .
    def get (self, key):
        prøve:
            return self.db [key]
        undtagen KeyError:
            return False
. . . .

get er en simpel funktion, vi tager nøglen som et argument og forsøger at returnere den værdi, der er knyttet til nøglen fra databasen. Ellers returneres falsk med en meddelelse.

. . . .
    def slette (selv, nøgle):
        hvis ikke indtastes self.db:
            return False
        del self.db [nøgle]
        self.dumpdb ()
        vende tilbage sandt

. . . .

Slet-funktion er at slette en nøgle samt dens værdi fra databasen. Først sørger vi for, at nøglen findes i databasen. Hvis ikke vender vi tilbage falsk. Ellers sletter vi nøglen med den indbyggede del, der automatisk sletter nøglens værdi. Dernæst gemmer vi databasen, og den returnerer falsk.

Nu kan du tænke, hvad nu hvis jeg har oprettet en stor database og vil nulstille den? I teorien kan vi bruge delete - men det er ikke praktisk, og det er også meget tidskrævende! Så vi kan oprette en funktion til at udføre denne opgave ...

. . . .

    def resetdb (self):
        self.db = {}
        self.dumpdb ()
        vende tilbage sandt
. . . .

Her er funktionen til at nulstille databasen, resetdb! Det er så enkelt: For det første, hvad vi gør, er at tildele vores in-memory database med et tomt JSON-objekt, og det gemmer det bare! Og det er det! Vores database er nu igen barberet.

Endelig…

Det er det venner! Vi har oprettet vores egen legetøjsdatabase! Faktisk er FoobarDB bare en simpel demonstration af en database. Det er som et billigt DIY legetøj: du kan forbedre det, som du vil. Du kan også tilføje mange andre funktioner, alt efter dine behov.

Fuld kilde er her bauripalash / foobardb

Jeg håber, du nød det! Fortæl mig dine forslag, ideer eller fejl, jeg har lavet i kommentarerne herunder!

Følg / ping mig på sociale sider Facebook, Twitter, Instagram

Tak skal du have! Vi ses snart!