Advertisement
teslariu

resto_admin

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