gcdoramas.com

CRUD básico con Flask

CRUD básico con Flask

CRUD básico con Flask (Crear, Leer, Actualizar y Eliminar)
¿Qué es un CRUD?

CRUD es un acrónimo que representa las cuatro operaciones básicas en cualquier sistema:

Create (Crear) → agregar datos
Read (Leer) → consultar datos
Update (Actualizar) → modificar datos
Delete (Eliminar) → borrar datos

Es la base de la mayoría de aplicaciones web.

¿Qué vamos a construir?

Un ejemplo simple de gestión de usuarios con Flask y SQL Server:

Ver usuarios
Agregar usuario
Editar usuario
Eliminar usuario
Estructura del proyecto
/proyecto

├── app.py
└── /templates
├── index.html
├── crear.html
└── editar.html
Configurar conexión a la base de datos
import pyodbc

def get_connection():
return pyodbc.connect(
'DRIVER={SQL Server};'
'SERVER=localhost;'
'DATABASE=mi_base_datos;'
'Trusted_Connection=yes;'
)
1. Leer datos (READ)
from flask import Flask, render_template

app = Flask(__name__)

@app.route("/")
def index():
conn = get_connection()
cursor = conn.cursor()

cursor.execute("SELECT id, nombre FROM usuarios")
usuarios = cursor.fetchall()

conn.close()

return render_template("index.html", usuarios=usuarios)
index.html

Usuarios



Nuevo usuario


2. Crear datos (CREATE)
from flask import request, redirect, url_for

@app.route("/crear", methods=["GET", "POST"])
def crear():
if request.method == "POST":
nombre = request.form.get("nombre")

conn = get_connection()
cursor = conn.cursor()

cursor.execute(
"INSERT INTO usuarios (nombre) VALUES (?)",
(nombre,)
)
conn.commit()
conn.close()

return redirect(url_for("index"))

return render_template("crear.html")
crear.html

Nuevo usuario







3. Actualizar datos (UPDATE)
@app.route("/editar/", methods=["GET", "POST"])
def editar(id):
conn = get_connection()
cursor = conn.cursor()

if request.method == "POST":
nombre = request.form.get("nombre")

cursor.execute(
"UPDATE usuarios SET nombre=? WHERE id=?",
(nombre, id)
)
conn.commit()
conn.close()

return redirect(url_for("index"))

cursor.execute("SELECT id, nombre FROM usuarios WHERE id=?", (id,))
usuario = cursor.fetchone()

conn.close()

return render_template("editar.html", usuario=usuario)
editar.html

Editar usuario







4. Eliminar datos (DELETE)
@app.route("/eliminar/")
def eliminar(id):
conn = get_connection()
cursor = conn.cursor()

cursor.execute("DELETE FROM usuarios WHERE id=?", (id,))
conn.commit()
conn.close()

return redirect(url_for("index"))
Buenas prácticas

Si quieres hacerlo bien desde el inicio:

Usa consultas parametrizadas (?)
Valida datos antes de guardar
Usa POST para eliminar (más seguro que GET)
Maneja errores con try/except
Separa lógica en archivos cuando crezca
Errores comunes
No hacer commit()
No cerrar la conexión
No validar inputs
Usar GET para eliminar datos
Rutas mal definidas
Mejora recomendada (importante)

No dejes el DELETE en GET en producción. Mejor usa POST:

@app.route("/eliminar/", methods=["POST"])
def eliminar(id):
...
Conclusión

El CRUD es el núcleo de cualquier sistema web. Si ya puedes hacer esto en Flask, ya tienes la base para construir sistemas reales como:

Paneles administrativos
Sistemas de inventario
Aplicaciones empresariales