Hogyan írhatunk egy egyszerű játékadatbázist a Python-ban perceken belül

A MySQL, a PostgreSQL, az Oracle, a Redis és még sok más, csak megnevezed - az adatbázisok valóban fontos technológiák az emberi civilizáció fejlődésében. Ma láthatjuk, hogy az adatok mennyire értékesek , és így az adatbázis biztonságos és stabil megtartása az, ahol bejön az adatbázis!

Tehát láthatjuk, mennyire fontosak az adatbázisok is. Jó ideig azon gondolkodtam, hogy létrehozom a Saját játék adatbázisomat, csak hogy megértsem, eljátszom és kísérletezzek vele. Ahogy Richard Feynman mondta:

"Amit nem tudok létrehozni, azt nem értem."

Tehát további beszélgetés nélkül ugorjunk bele a szórakoztató részbe: a kódolásba.

Kezdjük el a kódolást ...

Ehhez a Toy Database-hez a Python-t (a kedvencem ❤️) fogjuk használni . Ezt az adatbázist FooBarDB-nek neveztem el (más nevet nem találtam?), De hívhatod bárhogy!

Tehát először importáljunk néhány szükséges Python-könyvtárat, amelyek már elérhetők a Python Standard Library-ben:

import json import os

Igen, csak erre a két könyvtárra van szükségünk! Szükségünk van rá, jsonmivel az adatbázisunk a JSON-on és osegyes útvonalakkal kapcsolatos dolgokon alapul.

Most határozzuk meg a főosztályt FoobarDBnéhány elég alapfunkcióval, amelyeket az alábbiakban elmagyarázok.

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

Itt meghatároztuk a fő osztályunkat egy __init__függvénnyel. A Foobar adatbázis létrehozásakor csak az adatbázis helyét kell átadnunk. Az első __init__függvényben felvesszük a helyparamétert és kicseréljük a ~vagy ~usera felhasználó saját könyvtárát, hogy rendeltetésszerűen működjön. És végül tedd be self.locationváltozóba, hogy később ugyanazon osztályfüggvényekkel hozzáférhess. Végül argumentumként hívjuk a loadfüggvény átadását self.location.

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

A következő loadfüggvényben paraméternek vesszük az adatbázis helyét. Ezután ellenőrizze, hogy létezik-e az adatbázis vagy sem. Ha létezik, akkor betöltjük a _load()funkcióval (az alábbiakban ismertetjük). Ellenkező esetben létrehozunk egy üres memóriában lévő JSON objektumot. És végül térjen vissza a sikerre.

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

A _loadfüggvényben egyszerűen megnyitjuk az adatbázis fájlt a tárolt helyről self.location. Ezután átalakítjuk JSON objektummá, és betöltjük self.dbváltozóvá.

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

És végül a dumpdbfüggvény: a neve elmondja, mit csinál. Elveszi a memóriában lévő adatbázist (valójában egy JSON objektumot) a self.dbváltozóból, és elmenti az adatbázis fájlba! Ha sikeresen elmenti, akkor True-t ad vissza , különben False-t ad vissza

Kicsit használhatóbbá tenni?

Várj egy percet! ? Az adatbázis haszontalan, ha nem képes adatokat tárolni és visszakeresni, nem? Menjünk és adjuk hozzá őket is ...?

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

A setfunkció adatok hozzáadása az adatbázishoz. Mivel az adatbázisunk egy egyszerű kulcsérték alapú adatbázis, csak egy keyés valueargumentumot veszünk fel .

Először megpróbáljuk hozzáadni a kulcsot és értéket az adatbázishoz, majd menteni az adatbázist. Ha minden jól megy, akkor igaz lesz. Ellenkező esetben hibaüzenetet nyomtat, és hamis értéket ad vissza. (Nem akarjuk, hogy összeomoljon és törölje az adatainkat, ha hiba lép fel?).

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

getegy egyszerű függvény, keyargumentumként vesszük , és megpróbáljuk visszaadni a kulcshoz kapcsolt értéket az adatbázisból. Ellenkező esetben a False üzenet jelenik meg.

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

deleteA funkció egy kulcs és annak értékének törlése az adatbázisból. Először ellenőrizzük, hogy a kulcs megtalálható-e az adatbázisban. Ha nem, akkor visszaadjuk a False értéket. Ellenkező esetben töröljük a beépített kulcsot, delamely automatikusan törli a kulcs értékét. Ezután elmentjük az adatbázist, és hamis értéket ad vissza.

Most azt gondolhatja, mi van, ha létrehoztam egy nagy adatbázist, és vissza akarom állítani? Elméletileg használhatjuk delete- de ez nem praktikus, és nagyon időigényes is! ⏳ Tehát létrehozhatunk egy funkciót ennek a feladatnak a végrehajtására ...

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

Itt a funkcióját a adatbázis resetdb! Nagyon egyszerű: először is azt tesszük, hogy újból hozzárendeljük a memóriában lévő adatbázisunkat egy üres JSON-objektumhoz, és ez csak elmenti! És ez az! Adatbázisunk most ismét tiszta borotvált.

Végül… ?

Ennyi barátom! Létrehoztuk saját Toy adatbázisunkat ! ?? Valójában a Fo obarDB csak egy egyszerű demó az adatbázisról. Olyan, mint egy olcsó barkácsjáték: tetszés szerint javíthatja. Az igényeinek megfelelően sok más funkciót is hozzáadhat.

Itt van a teljes forrás? bauripalash / foobardb

Remélem élvezted! Mondja el nekem az alábbi megjegyzésekben elhangzott javaslatait, ötleteit vagy hibáit! ?

Kövesse / pingeljen a közösségi oldalakon? Facebook, Twitter, Instagram

Köszönöm! Hamarosan találkozunk!

Ha tetszik a munkám (cikkeim, történeteim, szoftvereim, kutatásaim és még sok más), fontolja meg, hogy vesz nekem egy kávét ☕?