Sådan skriver du en simpel legetøjsdatabase i Python inden for få minutter
MySQL, PostgreSQL, Oracle, Redis og mange flere, bare du hedder det - databaser er et virkelig vigtigt stykke teknologi i den menneskelige civilisations fremskridt. I dag kan vi se, hvor værdifulde data er, og så at holde dem sikre og stabile er, hvor databasen kommer ind!
Så vi kan også se, hvor vigtige databaser er. I nogen tid tænkte jeg på at oprette min egen legetøjsdatabase bare for at forstå, lege og eksperimentere med den. Som Richard Feynman sagde:
"Hvad jeg ikke kan skabe, forstår jeg ikke."Så lad os springe ind i den sjove del uden yderligere snak: 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 den, hvad du vil!
Så lad os først importere nogle nødvendige Python-biblioteker, som 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 nu definere hovedklassen FoobarDB
med nogle smukke grundlæggende funktioner, som jeg forklarer nedenfor.
class FoobarDB(object): def __init__(self , location): self.location = os.path.expanduser(location) self.load(self.location) def load(self , location): if os.path.exists(location): self._load() else: self.db = {} return True def _load(self): self.db = json.load(open(self.location , "r")) def dumpdb(self): try: json.dump(self.db , open(self.location, "w+")) return True except: return False
Her definerede vi vores hovedklasse med en __init__
funktion. Når vi opretter en Foobar-database, behøver vi kun videregive placeringen af databasen. I den første __init__
funktion tager vi placeringsparameteren og erstatter ~
eller ~user
med brugerens hjemmekatalog for at få det til at fungere til hensigt. Og til sidst, sæt det i self.location
variabel for at få adgang til det senere på de samme klassefunktioner. I sidste ende kalder vi load
funktionen passerer self.location
som et argument.
. . . . def load(self , location): if os.path.exists(location): self._load() else: self.db = {} return True . . . .
I den næste load
funktion tager vi placeringen af databasen som param. Kontroller derefter, om databasen findes eller ej. Hvis den findes, indlæser vi den med _load()
funktionen (forklaret nedenfor). Ellers opretter vi et tomt JSON-objekt i hukommelsen. Og endelig, vend tilbage sandt efter succes.
. . . . def _load(self): self.db = json.load(open(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(self): try: json.dump(self.db , open(self.location, "w+")) return True except: return False . . . .
Og endelig dumpdb
funktionen: dens navn siger, hvad den gør. Det tager databasen i hukommelsen (faktisk et JSON-objekt) fra self.db
variablen og gemmer den i databasefilen! Det returnerer Sandt, hvis det er gemt med succes, ellers returnerer det Falsk.
Gør det lidt mere anvendeligt ...?
Vent et øjeblik! ? En database er ubrugelig, hvis den ikke kan gemme og hente data, er det ikke? Lad os gå og tilføje dem også ...?
. . . . def set(self , key , value): try: self.db[str(key)] = value self.dumpdb() return True except Exception as e: print("[X] Error Saving Values to Database : " + str(e)) return False def get(self , key): try: return self.db[key] except KeyError: print("No Value Can Be Found for " + str(key)) return False def delete(self , key): if not key in self.db: return False del self.db[key] self.dumpdb() return True . . . .
Den set
funktion er at tilføje data til databasen. Da vores database er en simpel nøgleværdibaseret database, tager vi kun et key
og value
som et argument.
Først prøver vi at tilføje nøglen og værdien til databasen og derefter gemme databasen. Hvis alt går rigtigt, returnerer det sandt. Ellers udskriver den en fejlmeddelelse og returnerer Falsk. (Vi vil ikke have det til at gå ned og slette vores data hver gang der opstår en fejl?).
. . . . def get(self, key): try: return self.db[key] except KeyError: return False . . . .
get
er en simpel funktion, vi tager key
som et argument og forsøger at returnere den værdi, der er knyttet til nøglen, fra databasen. Ellers returneres Falsk med en besked.
. . . . def delete(self , key): if not key in self.db: return False del self.db[key] self.dumpdb() return True . . . .
delete
funktionen er at slette en nøgle såvel som dens værdi fra databasen. Først sørger vi for, at nøglen er til stede i databasen. Hvis ikke returnerer vi Falsk. Ellers sletter vi nøglen med den indbyggede, del
som automatisk sletter værdien af nøglen. Dernæst gemmer vi databasen, og den returnerer falsk.
Nu tænker du måske, hvad 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() return True . . . .
Her er funktionen til at nulstille databasen resetdb
! Det er så simpelt: først skal vi 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 Fo obarDB bare en simpel demo 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 nedenfor! ?
Følg / ping mig på socialt? Facebook, Twitter, Instagram
Tak skal du have! Vi ses snart!
Hvis du kan lide mit arbejde (mine artikler, historier, software, research og mange flere) Overvej at købe mig en kaffe ☕?