Comment écrire une base de données de jouets simple en Python en quelques minutes

MySQL, PostgreSQL, Oracle, Redis et bien d'autres, nommez-le - les bases de données sont un élément technologique vraiment important dans le progrès de la civilisation humaine. Aujourd'hui, nous pouvons voir à quel point les données sont précieuses , c'est pourquoi la base de données entre en jeu pour les maintenir en sécurité et stables!

Nous pouvons donc également voir à quel point les bases de données sont importantes. Pendant un certain temps, j'ai pensé à créer My Own Toy Database juste pour comprendre, jouer et expérimenter avec. Comme l'a dit Richard Feynman :

"Ce que je ne peux pas créer, je ne le comprends pas."

Alors sans plus parler, passons à la partie amusante: le codage.

Commençons le codage…

Pour cette base de données de jouets, nous utiliserons Python (mon préféré ❤️). J'ai nommé cette base de données FooBarDB (je n'ai pas trouvé d'autre nom?), Mais vous pouvez l'appeler comme vous voulez!

Commençons par importer quelques bibliothèques Python nécessaires qui sont déjà disponibles dans la bibliothèque standard Python:

import json import os

Oui, nous n'avons besoin que de ces deux bibliothèques! Nous avons besoin jsoncar notre base de données sera basée sur JSON et ospour certains éléments liés aux chemins.

Définissons maintenant la classe principale FoobarDBavec quelques fonctions assez basiques, que je vais expliquer ci-dessous.

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

Ici, nous avons défini notre classe principale avec une __init__fonction. Chaque fois que vous créez une base de données Foobar, il suffit de transmettre l'emplacement de la base de données. Dans la première __init__fonction, nous prenons le paramètre d'emplacement et remplaçons ~ou ~userpar le répertoire personnel de l'utilisateur pour le faire fonctionner comme prévu. Et enfin, mettez-le en self.locationvariable pour y accéder plus tard sur les mêmes fonctions de classe. En fin de compte, nous appelons la loadfonction en passant self.locationen argument.

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

Dans la loadfonction suivante , nous prenons l'emplacement de la base de données comme paramètre. Vérifiez ensuite si la base de données existe ou non. S'il existe, nous le chargeons avec la _load()fonction (expliquée ci-dessous). Sinon, nous créons un objet JSON vide en mémoire. Et enfin, revenez vrai en cas de succès.

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

Dans la _loadfonction, nous ouvrons simplement le fichier de base de données à partir de l'emplacement stocké dans self.location. Ensuite, nous le transformons en objet JSON et le chargeons en self.dbvariable.

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

Et enfin, la dumpdbfonction: son nom dit ce qu'elle fait. Il prend la base de données en mémoire (en fait un objet JSON) de la self.dbvariable et l'enregistre dans le fichier de base de données! Il renvoie True s'il est enregistré avec succès, sinon renvoie False.

Rendez-le un peu plus utilisable…?

Attends une minute! ? Une base de données est inutile si elle ne peut pas stocker et récupérer des données, n'est-ce pas? Allons les ajouter aussi…?

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

La setfonction est d'ajouter des données à la base de données. Comme notre base de données est une simple base de données basée sur des valeurs-clés, nous ne prendrons qu'un keyet valuecomme argument.

Tout d'abord, nous allons essayer d'ajouter la clé et la valeur à la base de données, puis enregistrer la base de données. Si tout va bien, il retournera Vrai. Sinon, il imprimera un message d'erreur et retournera False. (Nous ne voulons pas qu'il plante et efface nos données à chaque fois qu'une erreur se produit?).

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

getest une fonction simple, nous prenons keycomme argument et essayons de renvoyer la valeur liée à la clé depuis la base de données. Sinon, False est renvoyé avec un message.

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

deleteLa fonction est de supprimer une clé ainsi que sa valeur de la base de données. Tout d'abord, nous nous assurons que la clé est présente dans la base de données. Sinon, nous retournons False. Sinon, nous supprimons la clé avec le intégré delqui supprime automatiquement la valeur de la clé. Ensuite, nous sauvegardons la base de données et elle renvoie false.

Maintenant, vous pourriez penser, que se passe-t-il si j'ai créé une grande base de données et que je veux la réinitialiser? En théorie, nous pouvons utiliser delete- mais ce n'est pas pratique, et cela prend également beaucoup de temps! ⏳ Nous pouvons donc créer une fonction pour effectuer cette tâche ...

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

Voici la fonction pour réinitialiser la base de données resetdb,! C'est si simple: tout d'abord, ce que nous faisons est de réassigner notre base de données en mémoire avec un objet JSON vide et il la sauvegarde! Et c'est tout! Notre base de données est à nouveau rasée de près.

Finalement… ?

C'est ça les amis! Nous avons créé notre propre base de données de jouets ! ?? En fait, Fo obarDB n'est qu'une simple démonstration d'une base de données. C'est comme un jouet de bricolage bon marché: vous pouvez l'améliorer comme vous le souhaitez. Vous pouvez également ajouter de nombreuses autres fonctions selon vos besoins.

La source complète est ici? bauripalash / foobardb

J'espère que tu as aimé! Faites-moi savoir vos suggestions, idées ou erreurs que j'ai faites dans les commentaires ci-dessous! ?

Suivez-moi / envoyez-moi un ping sur les réseaux sociaux? Facebook, Twitter, Instagram

Merci! À bientôt!

Si vous aimez mon travail (mes articles, mes histoires, mes logiciels, mes recherches et bien d'autres), envisagez de m'acheter un café?