viernes, 7 de marzo de 2025

馃憠 Conectando SQLite con una Aplicaci贸n Web en Python: Flask y Bases de Datos

 

Hemos aprendido a manejar bases de datos SQLite en Python. Ahora daremos un paso m谩s: conectar SQLite con una aplicaci贸n web usando Flask.

Hoy aprender谩s:
✔️ ¿Qu茅 es Flask y por qu茅 usarlo?
✔️ C贸mo conectar Flask con SQLite
✔️ Crear una API para interactuar con la base de datos
✔️ Consultar y mostrar datos en una p谩gina web
✔️ Ejemplo pr谩ctico paso a paso

馃搶 Con este tutorial, podr谩s construir aplicaciones web din谩micas con bases de datos.


1️⃣ ¿Qu茅 es Flask y por qu茅 usarlo?

Flask es un framework ligero para crear aplicaciones web en Python.

馃搶 Ventajas de Flask:
✅ F谩cil de aprender y usar
✅ Permite crear APIs y p谩ginas web din谩micas
✅ Compatible con bases de datos como SQLite
✅ Ideal para proyectos peque帽os y medianos

Para instalar Flask, ejecuta:

pip install flask

2️⃣ Conectar Flask con SQLite

El primer paso es crear un archivo app.py y configurar la conexi贸n con SQLite.

馃搶 C贸digo para conectar Flask con SQLite:

from flask import Flask, g
import sqlite3 app = Flask(__name__) DATABASE = "mi_base.db" def get_db(): db = getattr(g, "_database", None) if db is None: db = g._database = sqlite3.connect(DATABASE) return db @app.teardown_appcontext def close_connection(exception): db = getattr(g, "_database", None) if db is not None: db.close()

馃搶 Explicaci贸n:
sqlite3.connect(DATABASE) → Conecta SQLite con Flask.
get_db() → Obtiene la conexi贸n a la base de datos.
@app.teardown_appcontext → Cierra la conexi贸n cuando termina la petici贸n.


3️⃣ Crear una API con Flask y SQLite

Vamos a crear una API REST que devuelva los datos almacenados en SQLite.

馃搶 C贸digo para obtener todos los registros de una tabla productos:

from flask import jsonify
@app.route("/productos", methods=["GET"]) def get_productos(): db = get_db() cursor = db.cursor() cursor.execute("SELECT * FROM productos") productos = cursor.fetchall() productos_json = [ {"id": p[0], "nombre": p[1], "precio": p[2], "stock": p[3]} for p in productos ] return jsonify(productos_json)

馃搶 Explicaci贸n:
@app.route("/productos") → Define una ruta para obtener los productos.
jsonify(productos_json) → Devuelve los datos en formato JSON.

馃搶 Salida esperada al visitar http://127.0.0.1:5000/productos en el navegador:

[
{"id": 1, "nombre": "Laptop", "precio": 1200.5, "stock": 10}, {"id": 2, "nombre": "Mouse", "precio": 25.99, "stock": 50} ]

4️⃣ Insertar Datos desde una API Flask

Tambi茅n podemos permitir que los usuarios env铆en datos a la base de datos.

馃搶 C贸digo para insertar productos en la base de datos:

from flask import request
@app.route("/productos", methods=["POST"]) def add_producto(): nuevo_producto = request.json db = get_db() cursor = db.cursor() cursor.execute("INSERT INTO productos (nombre, precio, stock) VALUES (?, ?, ?)", (nuevo_producto["nombre"], nuevo_producto["precio"], nuevo_producto["stock"])) db.commit() return jsonify({"mensaje": "Producto agregado correctamente"}), 201

馃搶 Explicaci贸n:
request.json → Recibe los datos enviados en formato JSON.
INSERT INTO productos (...) VALUES (...) → Inserta un nuevo registro en la base de datos.

馃搶 Ejemplo de JSON enviado en una petici贸n POST:

{
"nombre": "Teclado", "precio": 45.75, "stock": 30 }

El producto se agregar谩 a la base de datos y la API responder谩 con un mensaje de 茅xito.


5️⃣ Mostrar los Datos en una P谩gina Web con Flask y SQLite

Flask tambi茅n nos permite mostrar los datos en una p谩gina HTML en lugar de JSON.

馃搶 C贸digo para mostrar los productos en una plantilla HTML:

from flask import render_template
@app.route("/") def index(): db = get_db() cursor = db.cursor() cursor.execute("SELECT * FROM productos") productos = cursor.fetchall() return render_template("index.html", productos=productos)

馃搶 Plantilla templates/index.html:

<!DOCTYPE html>
<html> <head> <title>Lista de Productos</title> </head> <body> <h1>Productos Disponibles</h1> <ul> {% for producto in productos %} <li>{{ producto[1] }} - Precio: {{ producto[2] }} USD - Stock: {{ producto[3] }}</li> {% endfor %} </ul> </body> </html>

馃搶 Explicaci贸n:
render_template("index.html") → Carga una plantilla HTML.
{% for producto in productos %} → Muestra cada producto en la p谩gina.

馃搶 Salida esperada en el navegador:

Productos Disponibles
- Laptop - Precio: 1200.5 USD - Stock: 10 - Mouse - Precio: 25.99 USD - Stock: 50

Esta p谩gina muestra los productos almacenados en SQLite.


馃殌 Conclusi贸n

Flask permite conectar aplicaciones web con SQLite en Python.
Podemos crear APIs REST para interactuar con la base de datos.
Los datos pueden mostrarse en formato JSON o en una p谩gina HTML.

馃搶 Pr贸ximo post: Ejercicios pr谩cticos con Flask y SQLite en Python.

馃搨 C贸digo disponible en mi GitHub: github.com/josecodetech

馃帴 Aprende con mis videos en YouTube: https://www.youtube.com/@josecodetech

馃挰 ¿Has trabajado con bases de datos en aplicaciones web? Cu茅ntamelo.



No hay comentarios:

Publicar un comentario

Se procedera a revision para su pronta publicacion en caso de que no incumpla las normas de blogger.