Cómo escribir una base de datos de juguetes simple en Python en minutos

MySQL, PostgreSQL, Oracle, Redis y muchos más, lo que sea: las bases de datos son una pieza de tecnología realmente importante en el progreso de la civilización humana. Hoy podemos ver cuán valiosos son los datos , por lo que mantenerlos seguros y estables es donde entra la base de datos.

Entonces, podemos ver cuán importantes son las bases de datos. Durante bastante tiempo estuve pensando en crear Mi propia base de datos de juguetes solo para entender, jugar y experimentar con ella. Como dijo Richard Feynman :

"Lo que no puedo crear, no lo entiendo".

Así que sin hablar más, pasemos a la parte divertida: la codificación.

Empecemos a codificar ...

Para esta base de datos de juguetes, usaremos Python (mi favorito ❤️). Llamé a esta base de datos FooBarDB (¿no pude encontrar otro nombre?), ¡Pero puedes llamarlo como quieras!

Primero, importemos algunas bibliotecas de Python necesarias que ya están disponibles en la Biblioteca estándar de Python:

import json import os

Sí, ¡solo necesitamos estas dos bibliotecas! Necesitamos jsonya que nuestra base de datos se basará en JSON y ospara algunas cosas relacionadas con la ruta.

Ahora definamos la clase principal FoobarDBcon algunas funciones bastante básicas, que explicaré a continuación.

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

Aquí definimos nuestra clase principal con una __init__función. Siempre que creamos una base de datos Foobar, solo necesitamos pasar la ubicación de la base de datos. En la primera __init__función, tomamos el parámetro de ubicación y reemplazamos ~o ~usercon el directorio de inicio del usuario para que funcione de la manera deseada. Y finalmente, póngalo en self.locationvariable para acceder a él más tarde en las mismas funciones de clase. Al final, llamamos a la loadfunción pasando self.locationcomo argumento.

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

En la siguiente loadfunción tomamos la ubicación de la base de datos como parámetro. Luego verifique si la base de datos existe o no. Si existe, lo cargamos con la _load()función (explicado a continuación). De lo contrario, creamos un objeto JSON en memoria vacío. Y finalmente, vuelva a ser cierto en el éxito.

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

En la _loadfunción, simplemente abrimos el archivo de base de datos desde la ubicación almacenada en self.location. Luego lo transformamos en un objeto JSON y lo cargamos en self.dbvariable.

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

Y finalmente, la dumpdbfunción: su nombre dice lo que hace. Toma la base de datos en memoria (en realidad, un objeto JSON) de la self.dbvariable y la guarda en el archivo de la base de datos. Devuelve True si se guarda correctamente, de lo contrario devuelve False.

¿Hacerlo un poco más utilizable…?

¡Espera un minuto! ? Una base de datos es inútil si no puede almacenar y recuperar datos, ¿no es así? ¿Vamos a añadirlos también…?

. . . . 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 setfunción es agregar datos a la base de datos. Como nuestra base de datos es una base de datos simple basada en valores clave, solo tomaremos un keyy valuecomo argumento.

Primero, intentaremos agregar la clave y el valor a la base de datos y luego guardaremos la base de datos. Si todo va bien, devolverá True. De lo contrario, imprimirá un mensaje de error y devolverá False. (¿No queremos que se bloquee y borre nuestros datos cada vez que ocurra un error?).

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

getes una función simple, la tomamos keycomo argumento e intentamos devolver el valor vinculado a la clave desde la base de datos. De lo contrario, se devuelve False con un mensaje.

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

deleteLa función es eliminar una clave y su valor de la base de datos. Primero, nos aseguramos de que la clave esté presente en la base de datos. Si no, devolvemos False. De lo contrario, eliminamos la clave con el incorporado delque borra automáticamente el valor de la clave. A continuación, guardamos la base de datos y devuelve falso.

Ahora podría pensar, ¿qué pasa si he creado una base de datos grande y quiero restablecerla? En teoría, podemos usar delete, pero no es práctico, ¡y también requiere mucho tiempo! ⏳ Entonces podemos crear una función para hacer esta tarea ...

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

Aquí está la función para restablecer la base de datos resetdb. Es tan simple: primero, lo que hacemos es reasignar nuestra base de datos en memoria con un objeto JSON vacío y ¡simplemente lo guarda! ¡Y eso es! Nuestra base de datos está nuevamente afeitada.

Finalmente… ?

¡Eso es amigos! ¡Hemos creado nuestra propia base de datos de juguetes ! ?? En realidad, Fo obarDB es solo una demostración simple de una base de datos. Es como un juguete de bricolaje barato: puedes mejorarlo como quieras. También puede agregar muchas otras funciones según sus necesidades.

¿La fuente completa está aquí? bauripalash / foobardb

I hope, you enjoyed it! Let me know your suggestions, ideas or mistakes I’ve made in the comments below! ?

Follow/ping me on socials ? Facebook, Twitter, Instagram

Thank you! See you soon!

If You Like My Work (My Articles, Stories, Softwares, Researches and many more) Consider Buying Me A Coffee ☕ ?