viernes, 24 de julio de 2026

Día 25 — SQLite: bases de datos sin instalar nada

SQLite es un sistema de base de datos ligero que viene incluido en la librería estándar de Python, sin necesidad de instalar ni configurar ningún servidor adicional. Es ideal para aplicaciones pequeñas, prototipos rápidos o para aprender los fundamentos de SQL desde un entorno controlado.

El módulo sqlite3 permite crear tablas, insertar registros, realizar consultas y gestionar transacciones usando sentencias SQL estándar, lo que hace que el conocimiento adquirido sea directamente transferible a otros motores de base de datos como MySQL o PostgreSQL.

Código de ejemplo:

import sqlite3 conexion = sqlite3.connect("clientes.db") cursor = conexion.cursor() cursor.execute(""" CREATE TABLE IF NOT EXISTS clientes ( id INTEGER PRIMARY KEY, nombre TEXT, email TEXT ) """) cursor.execute("INSERT INTO clientes VALUES (1, 'Ana', 'ana@mail.com')") conexion.commit() for fila in cursor.execute("SELECT * FROM clientes"): print(fila) conexion.close()




jueves, 23 de julio de 2026

Día 24 — FastAPI: tu primera API REST en pocos minutos

FastAPI es uno de los frameworks Python más demandados en el desarrollo backend actual, gracias a su rapidez de desarrollo, su excelente rendimiento y la generación automática de documentación interactiva. Crear una API REST funcional requiere muy pocas líneas de código.

Una de sus características más valoradas es el tipado de parámetros: al especificar el tipo de cada argumento (str, int, etc.), FastAPI valida automáticamente los datos recibidos y genera documentación accesible en la ruta /docs, sin necesidad de escribirla manualmente.

Código de ejemplo:

from fastapi import FastAPI app = FastAPI() @app.get("/") def inicio(): return {"mensaje": "¡Hola desde FastAPI!"} @app.get("/usuario/{nombre}") def usuario(nombre: str, edad: int = 0): return {"nombre": nombre, "edad": edad} # Ejecutar con: uvicorn main:app --reload




miércoles, 22 de julio de 2026

Día 23 — Decoradores: añadiendo superpoderes a tus funciones

Un decorador es una función especial que envuelve a otra función para modificar o ampliar su comportamiento sin necesidad de alterar su código original. Se aplican colocando el símbolo @ seguido del nombre del decorador justo encima de la definición de la función.

Los decoradores son una herramienta muy presente en frameworks profesionales: en Flask y FastAPI se usan para definir rutas (@app.get), y en Django para gestionar permisos o autenticación. Entender cómo funcionan internamente ayuda mucho a comprender el comportamiento de estas herramientas.

Código de ejemplo:

import time

def medir_tiempo(funcion):
    def wrapper(*args, **kwargs):
        inicio = time.time()
        resultado = funcion(*args, **kwargs)
        print(f"Tardó: {time.time() - inicio:.4f}s")
        return resultado
    return wrapper

@medir_tiempo
def calcular():
    return sum(range(1_000_000))

print(calcular())