mi茅rcoles, 12 de marzo de 2025

馃憠 C贸mo Desplegar una Aplicaci贸n Flask con SQLite en la Nube

Hemos desarrollado una aplicaci贸n web con Flask y SQLite. Ahora es momento de desplegarla en la nube para que cualquier persona pueda acceder a ella.

Hoy aprender谩s:
✔️ Opciones para desplegar Flask en la nube
✔️ C贸mo preparar la aplicaci贸n para producci贸n
✔️ Usar Render o Railway para subir Flask con SQLite
✔️ Ejemplo paso a paso con un despliegue real

馃搶 Con este tutorial, podr谩s publicar tu aplicaci贸n Flask en internet.


1️⃣ Opciones para Desplegar Flask con SQLite

Existen varias opciones para hospedar una aplicaci贸n Flask en la nube. Algunas de las m谩s recomendadas son:

Render → Plataforma gratuita y f谩cil de usar para Flask y SQLite.
Railway → Alternativa moderna con soporte para bases de datos.
Heroku → Requiere configuraciones extra, pero es popular.
VPS (Digital Ocean, AWS, Linode) → M谩s avanzado, pero con mayor control.

Hoy usaremos Render, ya que permite subir Flask con SQLite f谩cilmente.


2️⃣ Preparar la Aplicaci贸n Flask para Producci贸n

Antes de desplegar, debemos crear un entorno virtual y configurar dependencias.

馃搶 Pasos previos:

1️⃣ Crea un entorno virtual en la carpeta de tu proyecto:

python -m venv venv source venv/bin/activate # En Mac/Linux venv\Scripts\activate # En Windows

2️⃣ Instala Flask y dependencias necesarias:

pip install flask gunicorn

3️⃣ Crea un archivo requirements.txt con las dependencias:

pip freeze > requirements.txt

馃搶 Este archivo es necesario para que Render instale las dependencias autom谩ticamente.


3️⃣ Subir la Aplicaci贸n a GitHub

Para desplegar en Render, primero necesitamos subir el proyecto a GitHub.

馃搶 Pasos para subir el c贸digo a un repositorio:

git init git add . git commit -m "Primera versi贸n de la app Flask" git branch -M main git remote add origin https://github.com/tuusuario/tu-repositorio.git git push -u origin main

Ahora el c贸digo est谩 en GitHub y listo para ser desplegado.


4️⃣ Desplegar Flask con SQLite en Render

Render permite ejecutar Flask con bases de datos SQLite f谩cilmente.

馃搶 Pasos para el despliegue:

1️⃣ Ve a Render y crea una cuenta.
2️⃣ En New Web Service, selecciona tu repositorio de GitHub.
3️⃣ En Build Command, escribe:

pip install -r requirements.txt

4️⃣ En Start Command, escribe:

gunicorn -b 0.0.0.0:10000 app:app

5️⃣ Configura el puerto en 10000 y despliega la aplicaci贸n.

馃搶 Despu茅s del proceso, tu aplicaci贸n Flask estar谩 en l铆nea.

Ejemplo de URL:

https://mi-aplicacion-flask.onrender.com

5️⃣ Probar la Aplicaci贸n en Producci贸n

馃搶 Para probar que funciona correctamente, visita:

https://mi-aplicacion-flask.onrender.com/tareas

Si todo est谩 bien, deber铆as ver los datos de SQLite en JSON:

[ {"id": 1, "descripcion": "Aprender Flask", "estado": "Pendiente"}, {"id": 2, "descripcion": "Deploy con Render", "estado": "Completado"} ]

Tu aplicaci贸n Flask con SQLite ahora est谩 accesible en internet.


馃殌 Conclusi贸n

Render permite desplegar Flask con SQLite f谩cilmente.
Configurar dependencias y subir el c贸digo a GitHub es clave.
Una vez en la nube, cualquier persona puede acceder a la API Flask.

馃搶 Pr贸ximo post: C贸mo conectar Flask con una base de datos PostgreSQL en producci贸n.

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

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

馃挰 ¿Has desplegado una aplicaci贸n Flask antes? ¿Qu茅 plataforma usaste? Cu茅ntamelo.



domingo, 9 de marzo de 2025

馃憠 Ejercicios Pr谩cticos con Flask y SQLite en Python

Ya aprendimos a conectar SQLite con Flask para crear aplicaciones web din谩micas. Ahora es momento de poner en pr谩ctica lo aprendido con ejercicios explicados paso a paso.

Hoy resolveremos ejercicios sobre:
✔️ Conectar Flask con una base de datos SQLite
✔️ Crear una API para insertar y consultar datos
✔️ Actualizar y eliminar registros desde la web
✔️ Ejemplo pr谩ctico con un sistema de gesti贸n de tareas

馃搶 Cada ejercicio incluye c贸digo, explicaci贸n y prueba de salida.


1️⃣ Ejercicio: Crear la Base de Datos SQLite y una Tabla de Tareas

馃搷 Objetivo: Crear una base de datos tareas.db y una tabla tareas.

馃敼 C贸digo:

import sqlite3 conexion = sqlite3.connect("tareas.db") cursor = conexion.cursor() cursor.execute(""" CREATE TABLE IF NOT EXISTS tareas ( id INTEGER PRIMARY KEY AUTOINCREMENT, descripcion TEXT, estado TEXT ) """) conexion.commit() conexion.close() print("Base de datos y tabla de tareas creadas exitosamente.")

馃搶 Salida esperada:

Base de datos y tabla de tareas creadas exitosamente.

Este c贸digo crea la base de datos SQLite con una tabla de tareas.


2️⃣ Ejercicio: Crear una API con Flask para Obtener las Tareas

馃搷 Objetivo: Crear una API con Flask para obtener todas las tareas almacenadas en SQLite.

馃敼 C贸digo:

from flask import Flask, jsonify import sqlite3 app = Flask(__name__) def get_db_connection(): conexion = sqlite3.connect("tareas.db") conexion.row_factory = sqlite3.Row return conexion @app.route("/tareas", methods=["GET"]) def obtener_tareas(): conexion = get_db_connection() cursor = conexion.cursor() cursor.execute("SELECT * FROM tareas") tareas = cursor.fetchall() conexion.close() tareas_json = [{"id": tarea["id"], "descripcion": tarea["descripcion"], "estado": tarea["estado"]} for tarea in tareas] return jsonify(tareas_json) if __name__ == "__main__": app.run(debug=True)

馃搶 Salida esperada en http://127.0.0.1:5000/tareas:

[ {"id": 1, "descripcion": "Terminar proyecto", "estado": "Pendiente"}, {"id": 2, "descripcion": "Enviar informe", "estado": "Completado"} ]

Esta API permite obtener todas las tareas almacenadas en la base de datos.


3️⃣ Ejercicio: Agregar Tareas a la Base de Datos Desde una API

馃搷 Objetivo: Permitir que los usuarios agreguen tareas mediante una API Flask.

馃敼 C贸digo:

from flask import request @app.route("/tareas", methods=["POST"]) def agregar_tarea(): nueva_tarea = request.json conexion = get_db_connection() cursor = conexion.cursor() cursor.execute("INSERT INTO tareas (descripcion, estado) VALUES (?, ?)", (nueva_tarea["descripcion"], nueva_tarea["estado"])) conexion.commit() conexion.close() return jsonify({"mensaje": "Tarea agregada correctamente"}), 201

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

{ "descripcion": "Aprender Flask", "estado": "Pendiente" }

馃搶 Salida esperada:

{ "mensaje": "Tarea agregada correctamente" }

Este c贸digo permite que los usuarios a帽adan tareas a la base de datos.


4️⃣ Ejercicio: Actualizar el Estado de una Tarea

馃搷 Objetivo: Modificar el estado de una tarea en la base de datos.

馃敼 C贸digo:

@app.route("/tareas/<int:id>", methods=["PUT"]) def actualizar_tarea(id): datos = request.json conexion = get_db_connection() cursor = conexion.cursor() cursor.execute("UPDATE tareas SET estado = ? WHERE id = ?", (datos["estado"], id)) conexion.commit() conexion.close() return jsonify({"mensaje": "Tarea actualizada correctamente"})

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

{ "estado": "Completado" }

馃搶 Salida esperada:

{ "mensaje": "Tarea actualizada correctamente" }

Este c贸digo permite actualizar el estado de una tarea espec铆fica.


5️⃣ Ejercicio: Eliminar una Tarea de la Base de Datos

馃搷 Objetivo: Borrar una tarea de la base de datos SQLite.

馃敼 C贸digo:

@app.route("/tareas/<int:id>", methods=["DELETE"]) def eliminar_tarea(id): conexion = get_db_connection() cursor = conexion.cursor() cursor.execute("DELETE FROM tareas WHERE id = ?", (id,)) conexion.commit() conexion.close() return jsonify({"mensaje": "Tarea eliminada correctamente"})

馃搶 Salida esperada al eliminar una tarea:

{ "mensaje": "Tarea eliminada correctamente" }

脷til para eliminar registros innecesarios.


馃殌 Conclusi贸n

✅ Hoy hemos resuelto ejercicios con Flask y SQLite en Python.
✅ Estos ejercicios permiten crear APIs para gestionar tareas desde una base de datos.
✅ Practica modificando el c贸digo para entenderlo mejor.

馃搶 Pr贸ximo post: C贸mo desplegar una aplicaci贸n Flask con SQLite en la nube.

馃搨 Descarga los ejercicios en mi GitHub: github.com/josecodetech

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

馃挰 ¿Te gustar铆a agregar nuevas funciones a este proyecto? ¡Com茅ntalo!



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.