Contenido del curso
Rutas y Plantillas con Jinja
Manejo de Formularios y Datos
Organización del Proyecto y Mejoras
Seguridad y Testing
- 14

Sesiones en Flask con blueprints y cookies
09:09 min - 15

Implementación de Login y Logout con Validación de Sesiones
03:35 min - 16

Validación de formularios en Flask con mensajes de error
04:30 min - 17

Pruebas Unitarias en Flask: Creación y Configuración
12:50 min - 18

Desarrollo de Microservicios con Flask
02:54 min
Conectar Flask a SQLite con SQLAlchemy
Resumen
Conectar Flask con SQLite usando SQLAlchemy te permite guardar datos persistentes sin escribir SQL manual. Esta guía te muestra cómo instalar la librería, configurar la base de datos y crear tu primer modelo de notas en Python, ideal para quienes empiezan con desarrollo backend en Flask.
La magia ocurre gracias al ORM (Object Relational Mapper), que traduce tus clases de Python en tablas de base de datos. Tú escribes Python, y SQLAlchemy se encarga de generar las queries SQL por debajo.
¿Qué es SQLAlchemy y por qué usarlo en Flask?
SQLAlchemy es la librería que actúa como puente entre tu aplicación Flask y motores de bases de datos como SQLite, MySQL o Postgres. Cada tabla se convierte en una clase de Python, y cada fila en un objeto que puedes manipular con métodos.
¿Qué es un ORM? Es una capa que traduce clases de Python a tablas SQL. Tú trabajas con objetos, y la librería genera las consultas automáticamente, devolviéndote los resultados como instancias de Python.
La ventaja práctica: aprendes solo Python y olvidas la sintaxis específica de cada motor de base de datos.
¿Cómo instalo flask-sqlalchemy en mi proyecto?
Antes de instalar nada, activa tu entorno virtual. Es un paso que muchos olvidan y termina contaminando dependencias globales [00:48].
- Activa el entorno virtual desde la terminal.
- Ejecuta
pip install flask-sqlalchemypara descargar la librería. - Crea un archivo
requirements.txtcon tus dependencias. - Usa
pip freeze | grep Flaskpara encontrar las versiones exactas instaladas.
El archivo requirements.txt es tu seguro de vida: cualquier persona que clone tu proyecto podrá instalar las mismas versiones que ya funcionan en tu máquina.
¿Cómo configurar SQLite en una aplicación Flask?
SQLite es una base de datos basada en archivos, lo que significa que toda tu información vive en un solo archivo .sqlite dentro del proyecto. No necesitas levantar un servidor aparte [02:45].
En tu app.py debes importar os para construir rutas dinámicas y definir dónde vivirá ese archivo:
python import os from flask_sqlalchemy import SQLAlchemy
DB_FILE_PATH = os.path.join(os.path.dirname(file), 'notes.sqlite')
app.config['SQLALCHEMY_DATABASE_URI'] = f'sqlite:///{DB_FILE_PATH}' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
La configuración SQLALCHEMY_TRACK_MODIFICATIONS en False evita que SQLAlchemy llene tus logs con información innecesaria. En producción esto sí puede ser útil para auditar cambios, pero para aprender solo estorba.
¿Por qué se usa el prefijo SQLALCHEMY_ en config? Porque la clase
SQLAlchemyrecorre automáticamente el diccionarioapp.configy toma todas las claves con ese prefijo como parámetros propios.
La variable db será tu puerta de entrada a la base de datos: con ella harás inserciones, consultas y modificaciones a lo largo de todo el proyecto.
¿Cómo crear un modelo en SQLAlchemy?
Un modelo es una clase de Python que hereda de db.Model y representa una tabla. Cada atributo de la clase corresponde a una columna [05:30].
Para la app de notas, defines tres campos: un identificador único, un título y un contenido.
python class Note(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100), nullable=False) content = db.Column(db.String(200), nullable=False)
def __repr__(self): return f'Note {self.id}: {self.title}'
Algunos detalles que vale la pena entender:
- El primary key es el identificador único de cada fila y permite relacionar tablas entre sí.
- El parámetro
nullable=Falseconvierte el campo en obligatorio. - El número dentro de
String(100)define el máximo de caracteres permitidos. - El método
__repr__define cómo se imprime el objeto en consola, útil al depurar.
¿Cómo crear las tablas con Flask Shell?
Definir el modelo no crea la tabla automáticamente. Necesitas ejecutar un comando para que SQLAlchemy genere el archivo y la estructura interna.
Aquí entra flask shell, un comando que abre una consola interactiva de Python con tu aplicación ya cargada [07:10]:
- Activa el entorno virtual en la terminal.
- Ejecuta
flask shell. - Importa la base de datos con
from app import db. - Ejecuta
db.create_all()para generar las tablas.
Después de esto, el archivo notes.sqlite aparece en tu carpeta del proyecto. Para verificar que la tabla existe, puedes usar el comando sqlite3 notes.sqlite desde la terminal y ejecutar .schema para ver la estructura.
¿Qué hace flask shell? Inicia una sesión interactiva de Python con el contexto de tu app Flask cargado, permitiéndote ejecutar comandos como crear tablas, importar modelos o probar consultas sin levantar el servidor.
Un truco útil: para entornos de prueba puedes nombrar el archivo distinto, así puedes borrarlo sin miedo. En producción, mantén un nombre estable que nunca debas tocar manualmente.
¿Qué otros motores son compatibles con SQLAlchemy?
Aunque aquí usamos SQLite por su simplicidad, la misma configuración funciona con MySQL y Postgres cambiando solo la URI de conexión. Esto significa que puedes empezar tu proyecto en local con SQLite y migrar a un motor más robusto sin reescribir tu lógica de modelos.
Como reto, agrega un campo created_at a tu modelo Note para guardar la fecha de creación. Te será útil para mostrar cuánto tiempo lleva existiendo cada nota dentro de tu aplicación. ¿Cómo lo resolverías? Cuéntame en los comentarios.