Advertisement
teslariu

rest

Oct 16th, 2021
73
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. Script para administrar un restaurante. Implementa dos tablas:
  6. categorias (primeros, segundos, postres, etc)
  7. platos (empanadas, sopa, flan, etc)
  8. """
  9.  
  10. import sqlite3
  11.  
  12. def mostrar_opciones():
  13.     return """
  14.         Menu de administración del restaurante
  15.     *-------------------------------------------*
  16.         1. Agregar categoria
  17.         2. Agregar plato
  18.         3. Mostrar menu
  19.         4. Salir
  20.     *-------------------------------------------*
  21.     """
  22.  
  23. def agregar_categoria(nombre):
  24.     try:
  25.         conn.execute("INSERT INTO categoria VALUES (null,?)", (nombre,))
  26.     except sqlite3.IntegrityError:
  27.         print(f"Error. Ya existe la categoría '{nombre}'")
  28.     else:
  29.         conn.commit()
  30.        
  31.        
  32. def agregar_plato():
  33.     try:
  34.         cursor.execute("SELECT * FROM categoria ORDER BY id")
  35.     except sqlite3.OperationalError:
  36.         print("La consulta no se ejecutò correctamente")
  37.     else:
  38.         categorias = cursor.fetchall()
  39.         if categorias:
  40.             id_categoria = []
  41.             print("Categorias")
  42.             print("----------")
  43.             print("ID | nombre")
  44.             print("-----------")
  45.             for ID, nombre in categorias:
  46.                 id_categoria.append(ID)
  47.                 print(f"{ID}  | {nombre}")
  48.                
  49.             while True:
  50.                 try:
  51.                     ID = int(input("\nSeleccione un ID: "))
  52.                 except ValueError:
  53.                     print("El ID debe ser un nro entero")
  54.                 else:
  55.                     if ID in id_categoria:
  56.                         break
  57.                     print("ID inexistente")
  58.                    
  59.             nombre_plato = input("Ingrese el nombre del plato: ")
  60.             try:
  61.                 conn.execute("INSERT INTO platos VALUES (null,?,?)", (nombre_plato,ID))
  62.             except sqlite3.IntegrityError:
  63.                 print(f"Error. Ya existe el plato '{nombre_plato}'")
  64.             else:
  65.                 conn.commit()
  66.         else:
  67.             print("No existen 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.     cursor.execute(query)
  76.     platos = cursor.fetchall()
  77.     if platos:
  78.         print("\nID  categoria     ID  platos  ")
  79.         print("--------------------------------")
  80.         for plato in platos:
  81.             print()
  82.             for elemento in plato:
  83.                 if isinstance(elemento, str):
  84.                     print("{:<12}".format(elemento),end=" ")
  85.                 if isinstance(elemento, int):
  86.                     print("{:^3}".format(elemento),end=" ")
  87.         print()
  88.     else:
  89.         print("No existe ningún plato en el menu")    
  90.  
  91.  
  92.  
  93.  
  94. conn = sqlite3.connect("restaurante.db")
  95. cursor = conn.cursor()
  96.    
  97.  
  98. ##########################################
  99.  
  100.  
  101.  
  102. while True:
  103.     print(mostrar_opciones())
  104.     opcion = input("Seleccione una opcion: ")
  105.  
  106.     if opcion == "1":
  107.         agregar_categoria(input("Ingrese el nombre: "))
  108.        
  109.     elif opcion == "2":
  110.         agregar_plato()
  111.        
  112.     elif opcion == "3":
  113.         mostrar_menu()
  114.        
  115.     elif opcion == "4":
  116.         print("Cerrando conexiones con la base de datos...")
  117.         conn.close()
  118.         break
  119.        
  120.     else:
  121.         print("Opción incorrecta")
Advertisement
RAW Paste Data Copied
Advertisement