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 jsonda vores database vil være baseret på JSON og osfor nogle stierelaterede ting.

Lad os nu definere hovedklassen FoobarDBmed 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 ~usermed brugerens hjemmekatalog for at få det til at fungere til hensigt. Og til sidst, sæt det i self.locationvariabel for at få adgang til det senere på de samme klassefunktioner. I sidste ende kalder vi loadfunktionen passerer self.locationsom et argument.

. . . . def load(self , location): if os.path.exists(location): self._load() else: self.db = {} return True . . . .

I den næste loadfunktion 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 _loadfunktionen å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.dbvariabel.

. . . . def dumpdb(self): try: json.dump(self.db , open(self.location, "w+")) return True except: return False . . . .

Og endelig dumpdbfunktionen: dens navn siger, hvad den gør. Det tager databasen i hukommelsen (faktisk et JSON-objekt) fra self.dbvariablen 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 setfunktion er at tilføje data til databasen. Da vores database er en simpel nøgleværdibaseret database, tager vi kun et keyog valuesom 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 . . . .

geter en simpel funktion, vi tager keysom 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 . . . .

deletefunktionen 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, delsom 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 ☕?