🏪
Ejercicio de clase · Python + SQLite

Mi primer kiosco 🍬

Vamos a conectar Python con una base de datos SQLite y mostrar los productos en pantalla al presionar un botón.

🎯 Objetivo del ejercicio

Dar tus primeros pasos conectando Python con SQLite. Vas a crear una base de datos con DB Browser, cargar 5 productos a mano y luego programar una pequeña aplicación con ventana (tkinter) que lea esos datos y los muestre.

1

Crear la base de datos con DB Browser Herramienta visual, sin escribir código

Paso 1 Abrir el programa

Abrí DB Browser for SQLite en tu computadora.

Paso 2 Crear una base de datos nueva

Hacé clic en "Nueva base de datos" y guardala con el nombre kiosco.db. Anotá bien la carpeta donde la guardás, la vas a necesitar después.

Paso 3 Crear la tabla

Se abre la ventana "Editar definición de tabla". Si no aparece, hacé clic en "Crear tabla".

CampoTipoNotas
idINTEGERMarcá PK clave primaria y AI autoincremento
productoTEXTEl nombre del producto
precioREALSirve para números con decimales

Hacé clic en Aceptar.

Paso 4 Cargar 5 productos

Andá a la pestaña "Examinar datos" y con "Nuevo registro" cargá 5 productos. No escribas nada en id: se completa solo.

idproductoprecio
1Caramelos150
2Galletitas320.5
3Gaseosa800
4Alfajor450
5Chicles200

Paso 5 Guardar los cambios

Hacé clic en "Escribir cambios" (arriba a la izquierda).

⚠️ ¡Muy importante! Si no guardás con "Escribir cambios", la aplicación de Python no va a ver los datos.
2

Crear la aplicación en Python Ahora sí, a programar con tkinter y sqlite3

Paso 6 Ubicar el archivo

Creá tu archivo kiosco.py en la misma carpeta donde guardaste kiosco.db. Así Python la encuentra sin problemas.

Paso 7 Escribir el código

Copiá el siguiente código leyendo los comentarios para entender cada línea:

kiosco.py
# ==========================================================
# APLICACIÓN: Mostrar los productos del kiosco
# La base de datos "kiosco.db" ya fue creada con DB Browser
# ==========================================================

# Importamos las librerías necesarias
import tkinter as tk     # Para la ventana y el botón
import sqlite3           # Para leer la base de datos


# ----------------------------------------------------------
# Función que lee los productos y los muestra en pantalla
# ----------------------------------------------------------
def mostrar_productos():
    # Nos conectamos a la base de datos que ya existe
    conexion = sqlite3.connect("kiosco.db")
    cursor = conexion.cursor()

    # Le pedimos a la base TODOS los productos con un SELECT
    cursor.execute("SELECT producto, precio FROM productos")

    # Guardamos todas las filas que devuelve la consulta
    filas = cursor.fetchall()

    # Cerramos la conexión con la base
    conexion.close()

    # Vaciamos el cuadro de texto por si había algo escrito
    cuadro_texto.delete("1.0", tk.END)

    # Recorremos fila por fila y la mostramos en el cuadro
    for fila in filas:
        producto = fila[0]     # El primer dato es el nombre
        precio = fila[1]       # El segundo dato es el precio
        cuadro_texto.insert(tk.END, f"{producto} - ${precio}\n")


# ----------------------------------------------------------
# Creación de la ventana con tkinter
# ----------------------------------------------------------

# Creamos la ventana principal
ventana = tk.Tk()
ventana.title("Kiosco")
ventana.geometry("300x250")     # Ancho x Alto de la ventana

# Etiqueta con un título arriba
titulo = tk.Label(ventana, text="Lista de productos")
titulo.pack(pady=10)

# Cuadro de texto donde aparecerán los productos
cuadro_texto = tk.Text(ventana, width=30, height=8)
cuadro_texto.pack()

# Botón que, al presionarlo, ejecuta la función mostrar_productos
boton = tk.Button(ventana, text="Mostrar productos", command=mostrar_productos)
boton.pack(pady=10)

# Dejamos la ventana abierta esperando que el usuario haga clic
ventana.mainloop()

Paso 8 Ejecutar y probar

Guardá el archivo y ejecutalo. Cuando se abra la ventana, presioná el botón "Mostrar productos". Deberían aparecer los 5 productos que cargaste con DB Browser. 🎉

?

Para pensar y responder

🤔 Reflexionamos

  1. ¿Qué diferencia hay entre este ejercicio y el anterior? (Pista: ¿dónde se cargaron los productos esta vez?)
  2. ¿Qué pasa si cerrás la app, agregás un producto nuevo en DB Browser, guardás y volvés a presionar el botón?
  3. ¿Para qué sirve la línea cursor.execute("SELECT producto, precio FROM productos")?
  4. Si en DB Browser no hacés clic en "Escribir cambios", ¿la app muestra los productos? ¿Por qué?

🚀 Desafío opcional

Modificá la consulta SELECT para que los productos aparezcan ordenados por precio.

💡 Pista: al final del SELECT se puede agregar ORDER BY precio