Advertisement
teslariu

db1

Nov 1st, 2021
89
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. #
  4.  
  5. import sqlite3
  6.  
  7. def mostrar_opciones():
  8.     return """
  9.         Menu de administración del menu del restaurante
  10.     *---------------------------------------------------*
  11.         1. Agregar categoria
  12.         2. Agregar plato
  13.         3. Mostrar menu
  14.         4. Salir
  15.     *---------------------------------------------------*
  16.     """
  17.  
  18. def agregar_categoria(nombre):
  19.     try:
  20.         conn.execute('INSERT INTO categoria VALUES(null,?)', (nombre,))
  21.     except sqlite3.IntegrityError:
  22.         print(f"Error. Ya existe la categoría '{nombre}'")
  23.     except sqlite3.OperationalError:
  24.         print("La consulta no se ejecutó correctamente")
  25.     else:
  26.         conn.commit()
  27.    
  28.  
  29. def agregar_plato():
  30.     try:
  31.         cursor.execute("SELECT * FROM categoria ORDER BY id")
  32.     except sqlite3.OperationalError:
  33.         print("La consulta no se ejecutó correctamente")
  34.     else:
  35.         categorias = cursor.fetchall() # vuelco todos los datos
  36.         if categorias:
  37.             id_categoria = [] # creo una lista vacía para almacenar id de categorías
  38.             print("Categorias")
  39.             print("----------")
  40.             print("ID | nombre")
  41.             print("-------------")
  42.             for ID,nombre in categorias:
  43.                 id_categoria.append(ID)
  44.                 print(f"{ID}  | {nombre}")
  45.                
  46.             while True:
  47.                 try:
  48.                     ID = int(input("\nSeleccione un ID: "))
  49.                 except ValueError:
  50.                     print("El ID debe ser un numero entero...")
  51.                 else:
  52.                     if ID in id_categoria:
  53.                         break
  54.                     print("ID de categoría inexistente..")
  55.                    
  56.             nombre_plato = input("Ingrese el nombre del plato: ")
  57.             try:
  58.                 conn.execute('INSERT INTO platos VALUES(null,?,?)', (nombre_plato,ID))
  59.             except sqlite3.IntegrityError:
  60.                 print(f"Error. Ya existe el plato '{nombre_plato}'")
  61.             except sqlite3.OperationalError:
  62.                 print("La consulta no se ejecutó correctamente")
  63.             else:
  64.                 conn.commit()
  65.            
  66.         else:
  67.             print("No hay categorías de platos")
  68.            
  69.            
  70. def mostrar_menu():
  71.     query = "SELECT categoria.id, categoria.nombre, platos.id, platos.nombre FROM categoria\
  72.             LEFT JOIN platos\
  73.             ON platos.id_categoria = categoria.id\
  74.             ORDER BY categoria.id, platos.id"
  75.            
  76.     cursor.execute(query)
  77.     platos = cursor.fetchall()
  78.     if platos:
  79.         print("\nID categoria   ID  plato  ")
  80.         print("----------------------------")
  81.         for plato in platos:
  82.             print()
  83.             for elemento in plato:
  84.                 if isinstance(elemento, str):
  85.                     print("{:<12}".format(elemento), end=" ")
  86.                 elif isinstance(elemento, int):
  87.                     print("{:^3}".format(elemento), end=" ")
  88.         print()
  89.     else:
  90.         print("No hay ningún plato en el menú")
  91.  
  92.  
  93.  
  94. conn = sqlite3.connect("restaurante.db")
  95. cursor = conn.cursor()
  96.  
  97. while True:
  98.     print(mostrar_opciones())
  99.     opcion = input("Seleccione su opción: ")
  100.    
  101.     if opcion == "1":
  102.         agregar_categoria(input("Ingrese el nombre: "))
  103.        
  104.     elif opcion == "2":
  105.         agregar_plato()
  106.        
  107.     elif opcion == "3":
  108.         mostrar_menu()
  109.    
  110.     elif opcion == "4":
  111.         conn.close()
  112.         print("Cerrando conexiones...")
  113.         break
  114.        
  115.     else:
  116.         print("Opción incorrecta")
  117.        
  118.  
Advertisement
RAW Paste Data Copied
Advertisement