Skip to content

Instantly share code, notes, and snippets.

@parzibyte
Created March 3, 2021 00:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save parzibyte/a21be47c2c64f5fd9d1a2346326a72f6 to your computer and use it in GitHub Desktop.
Save parzibyte/a21be47c2c64f5fd9d1a2346326a72f6 to your computer and use it in GitHub Desktop.
"""
https://parzibyte.me/blog
Antes de todo, crear una base de datos llamada "diccionario" en MySQL y
saber usuario con contraseña. Luego, configurar aquí
"""
from peewee import MySQLDatabase, Model, TextField
NOMBRE_BASE_DE_DATOS = "diccionario"
USUARIO = "root"
PALABRA_SECRETA = ""
conexion = MySQLDatabase(NOMBRE_BASE_DE_DATOS,
user=USUARIO, password=PALABRA_SECRETA)
class ModeloBase(Model):
class Meta:
database = conexion
class Palabra(ModeloBase):
palabra = TextField()
significado = TextField()
def crear_tablas():
conexion.connect()
conexion.create_tables([Palabra])
def principal():
crear_tablas()
menu = """
a) Agregar nueva palabra
b) Editar palabra existente
c) Eliminar palabra existente
d) Ver listado de palabras
e) Buscar significado de palabra
f) Salir
Elige: """
eleccion = ""
while eleccion != "f":
eleccion = input(menu)
if eleccion == "a":
palabra = input("Ingresa la palabra: ")
# Comprobar si no existe
posible_significado = buscar_significado_palabra(palabra)
if posible_significado:
print(f"La palabra '{palabra}' ya existe")
else:
significado = input("Ingresa el significado: ")
agregar_palabra(palabra, significado)
print("Palabra agregada")
if eleccion == "b":
palabra = input("Ingresa la palabra que quieres editar: ")
nuevo_significado = input("Ingresa el nuevo significado: ")
editar_palabra(palabra, nuevo_significado)
print("Palabra actualizada")
if eleccion == "c":
palabra = input("Ingresa la palabra a eliminar: ")
eliminar_palabra(palabra)
if eleccion == "d":
palabras = obtener_palabras()
print("=== Lista de palabras ===")
for palabra in palabras:
# Al leer desde la base de datos se devuelven los datos como arreglo, por
# lo que hay que imprimir el primer elemento
print(palabra.palabra)
if eleccion == "e":
palabra = input(
"Ingresa la palabra de la cual quieres saber el significado: ")
significado = buscar_significado_palabra(palabra)
if significado:
print(
f"El significado de '{palabra}' es:\n{significado}")
else:
print(f"Palabra '{palabra}' no encontrada")
def agregar_palabra(palabra, significado):
Palabra.create(palabra=palabra, significado=significado)
def editar_palabra(palabra, nuevo_significado):
Palabra.update({Palabra.significado: nuevo_significado}).where(
Palabra.palabra == palabra).execute()
def eliminar_palabra(palabra):
Palabra.delete().where(Palabra.palabra == palabra).execute()
def obtener_palabras():
return Palabra.select()
def buscar_significado_palabra(palabra):
# peewee va a lanzar una excepción si no encuentra filas que coincidan
try:
return Palabra.select().where(Palabra.palabra == palabra).get().significado
except Exception:
# Y nosotros atrapamos esa excepción devolviendo None, lo que significa que no existe la palabra
return None
if __name__ == '__main__':
principal()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment