MySQL, PostgreSQL, Oracle, Redis și multe altele, doar îl numiți – bazele de date sunt o piesă de tehnologie cu adevărat importantă în progresul civilizației umane. Astăzi putem vedea cât de valoros este date sunt, astfel încât păstrarea acestora în condiții de siguranță și stabilitate este locul unde intră baza de date!

Deci, putem vedea cât de importante sunt și bazele de date. De ceva timp m-am gândit să creez propria mea bază de date de jucării doar pentru a înțelege, a juca și a experimenta cu ea. La fel de Richard Feynman a spus:

„Ceea ce nu pot crea, nu înțeleg.”

Deci, fără să mai vorbim, să trecem la partea distractivă: codarea.

Să începem codificarea …

Pentru această bază de date de jucării, o vom folosi Piton (preferatul meu ❤️). Am numit această bază de date FooBarDB (Nu am putut găsi alt nume?), Dar îl poți numi oricum vrei!

Deci, mai întâi să importăm câteva biblioteci Python necesare care sunt deja disponibile în Python Standard Library:

import json
import os

Da, avem nevoie doar de aceste două biblioteci! Avem nevoie json deoarece baza noastră de date se va baza pe JSON și os pentru unele lucruri legate de cale.

Acum să definim clasa principală FoobarDB cu câteva funcții destul de simple, pe care le voi explica mai jos.

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

Aici ne-am definit clasa principală cu un __init__ funcţie. Ori de câte ori creăm o bază de date Foobar, trebuie doar să trecem locația bazei de date. In primul __init__ funcție luăm parametrul de locație și înlocuim ~ sau ~user cu directorul de acasă al utilizatorului pentru a-l face să funcționeze în mod intenționat. Și, în cele din urmă, pune-l în self.location variabilă pentru a-l accesa ulterior pe aceleași funcții de clasă. În cele din urmă, apelăm la load funcția de trecere self.location ca argument.

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

În urmatoarele load funcție luăm locația bazei de date ca parametru. Apoi verificați dacă baza de date există sau nu. Dacă există, îl încărcăm cu _load() funcție (explicată mai jos). În caz contrar, creăm un obiect JSON gol în memorie. Și, în cele din urmă, reveniți la succes.

. . . . 

    def _load(self):
        self.db = json.load(open(self.location , "r"))
. . . .

În _load funcție, pur și simplu deschidem fișierul bazei de date din locația stocată în self.location. Apoi îl transformăm într-un obiect JSON și îl încărcăm în self.db variabil.

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

. . . .

Și în cele din urmă, dumpdb funcție: numele său spune ce face. Acesta ia baza de date în memorie (de fapt un obiect JSON) din self.db variabilă și o salvează în fișierul bazei de date! Se întoarce Adevărat dacă este salvat cu succes, altfel revine Fals.

Faceți-o puțin mai utilizabilă …?

Așteptați un minut! ? O bază de date este inutilă dacă nu poate stoca și prelua date, nu-i așa? Să mergem și să le adăugăm și ele …?

. . . .
    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
. . . .

set funcția este de a adăuga date la baza de date. Deoarece baza noastră de date este o bază de date simplă bazată pe valoare-cheie, vom lua doar un key și value ca argument.

Mai întâi, vom încerca să adăugăm cheia și valoarea la baza de date și apoi să salvăm baza de date. Dacă totul merge bine, acesta va reveni True. În caz contrar, va imprima un mesaj de eroare și va returna False. (Nu vrem să se blocheze și să ne șteargă datele de fiecare dată când apare o eroare?).

. . . .
    def get(self, key):
        try:
            return self.db[key]
        except KeyError:
            return False
. . . .

get este o funcție simplă, luăm key ca argument și încercați să returnați valoarea legată de cheie din baza de date. În caz contrar, False este returnat cu un mesaj.

. . . .
    def delete(self , key):
        if not key in self.db:
            return False
        del self.db[key]
        self.dumpdb()
        return True

. . . .

delete funcția este de a șterge o tastă, precum și valoarea acesteia din baza de date. În primul rând, ne asigurăm că cheia este prezentă în baza de date. Dacă nu, ne întoarcem False. În caz contrar, ștergem cheia cu dispozitivul încorporat del care șterge automat valoarea cheii. Apoi, salvăm baza de date și returnează fals.

Acum s-ar putea să vă gândiți, dacă am creat o bază de date mare și doresc să o resetez? În teorie, putem folosi delete – dar nu este practic și, de asemenea, consumă mult timp! ⏳ Deci putem crea o funcție pentru a realiza această sarcină …

. . . . 

    def resetdb(self):
        self.db={}
        self.dumpdb()
        return True
. . . .

Iată funcția de resetare a bazei de date, resetdb! Este atât de simplu: mai întâi, ceea ce facem este să ne alocăm din nou baza de date în memorie cu un obiect JSON gol și doar îl salvează! Si asta e! Baza noastră de date este acum din nou rasă.

In cele din urma… ?

Asta e prietenii! Ne-am creat propriile noastre Baza de date jucării ! ?? De fapt, FoobarDB iEste doar o simplă demonstrație a unei baze de date. Este ca o jucărie DIY ieftină: o poți îmbunătăți cum vrei. De asemenea, puteți adăuga multe alte funcții în funcție de nevoile dvs.

Sursa completă este aici? bauripalash / foobardb

Sper ca ti-a placut! Spuneți-mi sugestiile, ideile sau greșelile pe care le-am făcut în comentariile de mai jos! ?

Urmăriți-mi / trimiteți-mi ping pe rețelele sociale Facebook, Twitter, Eunstagram

Mulțumesc! Pe curând!


Dacă îți place munca mea (articolele mele, poveștile, software-urile, cercetările și multe altele) ia în considerare Cumpărându-mi o cafea ☕ ?