#!/usr/bin/env python # -*- coding: utf-8 -*- # import sqlite3 def mostrar_opciones(): return """ Menu de administración del menu del restaurante *---------------------------------------------------* 1. Agregar categoria 2. Agregar plato 3. Mostrar menu 4. Salir *---------------------------------------------------* """ def agregar_categoria(nombre): try: conn.execute('INSERT INTO categoria VALUES(null,?)', (nombre,)) except sqlite3.IntegrityError: print(f"Error. Ya existe la categoría '{nombre}'") except sqlite3.OperationalError: print("La consulta no se ejecutó correctamente") else: conn.commit() def agregar_plato(): try: cursor.execute("SELECT * FROM categoria ORDER BY id") except sqlite3.OperationalError: print("La consulta no se ejecutó correctamente") else: categorias = cursor.fetchall() # vuelco todos los datos if categorias: id_categoria = [] # creo una lista vacía para almacenar id de categorías print("Categorias") print("----------") print("ID | nombre") print("-------------") for ID,nombre in categorias: id_categoria.append(ID) print(f"{ID} | {nombre}") while True: try: ID = int(input("\nSeleccione un ID: ")) except ValueError: print("El ID debe ser un numero entero...") else: if ID in id_categoria: break print("ID de categoría inexistente..") nombre_plato = input("Ingrese el nombre del plato: ") try: conn.execute('INSERT INTO platos VALUES(null,?,?)', (nombre_plato,ID)) except sqlite3.IntegrityError: print(f"Error. Ya existe el plato '{nombre_plato}'") except sqlite3.OperationalError: print("La consulta no se ejecutó correctamente") else: conn.commit() else: print("No hay categorías de platos") def mostrar_menu(): query = "SELECT categoria.id, categoria.nombre, platos.id, platos.nombre FROM categoria\ LEFT JOIN platos\ ON platos.id_categoria = categoria.id\ ORDER BY categoria.id, platos.id" cursor.execute(query) platos = cursor.fetchall() if platos: print("\nID categoria ID plato ") print("----------------------------") for plato in platos: print() for elemento in plato: if isinstance(elemento, str): print("{:<12}".format(elemento), end=" ") elif isinstance(elemento, int): print("{:^3}".format(elemento), end=" ") print() else: print("No hay ningún plato en el menú") conn = sqlite3.connect("restaurante.db") cursor = conn.cursor() while True: print(mostrar_opciones()) opcion = input("Seleccione su opción: ") if opcion == "1": agregar_categoria(input("Ingrese el nombre: ")) elif opcion == "2": agregar_plato() elif opcion == "3": mostrar_menu() elif opcion == "4": conn.close() print("Cerrando conexiones...") break else: print("Opción incorrecta")