CodeForge

Python de Cero a Experto / Ruta backend

Base de datos: SQL y SQLModel

Teoría24 min20 XP

Una API que olvida todo al reiniciarse no sirve: los datos deben PERSISTIR en una base de datos. El lenguaje universal para hablar con bases de datos relacionales es SQL, y Python trae sqlite3 incluido —que corre aquí mismo, en vivo—. Para conectar esto con FastAPI de forma elegante existe SQLMODEL, que une Pydantic y la base de datos en un solo modelo. Hoy aprendes a guardar y consultar datos: el corazón de cualquier backend.

El archivador con índice

SQL en vivo con sqlite3

sqlite3 viene incluido con Python (¡y corre aquí!). Una base de datos en memoria para aprender SQL:

sqlite3.connect abre la base de datos (aquí en memoria; en tu app sería un archivo o un servidor PostgreSQL). Con SQL: CREATE TABLE define la estructura, INSERT crea registros (usa ? para los valores —NUNCA metas datos con f-strings en SQL: es la puerta a la inyección SQL, el ataque más clásico—), SELECT lee (con WHERE para filtrar, ORDER BY para ordenar, COUNT/SUM para agregar). commit() guarda los cambios. Este es el CRUD en SQL puro, corriendo de verdad. SQL es una habilidad que trasciende Python —lo usarás en cualquier lenguaje que toque una base de datos—.

UPDATE, DELETE y SQLModel

¿Por qué se usan parámetros (?) en las consultas SQL en vez de insertar los valores con f-strings, y qué aporta SQLModel?

Mini-reto

Practica SQL en vivo con sqlite3: 1) crea una base en memoria y una tabla gastos (id, nombre, valor, categoria); 2) inserta cuatro gastos con executemany y parámetros ?; 3) haz un SELECT con WHERE que traiga los de una categoría ordenados por valor, y otro con SUM/COUNT para el total; 4) haz un UPDATE de un valor y un DELETE de un registro, y verifica el resultado. Recuerda commit() tras los cambios.

Qué sigue

Ya persistes datos. Falta proteger tu API: no cualquiera debe poder ver o modificar los datos. La próxima lección trae la AUTENTICACIÓN con JWT —cómo verificar quién es cada usuario y proteger endpoints—, la pieza de seguridad que toda API real necesita.