Misión 3 · Lección 6

ORM con SQLAlchemy en Flask

Objetivos

¿Qué es un ORM?

ORM (Object Relational Mapping) permite interactuar con la base de datos usando objetos en lugar de SQL.

Instalación

pip install flask-sqlalchemy

Configuración en Flask

from flask_sqlalchemy import SQLAlchemy

app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///database.db"
db = SQLAlchemy(app)

Definir un Modelo

class Usuario(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    nombre = db.Column(db.String(100), nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)

    def __repr__(self):
        return f"<Usuario {self.nombre}>"

Crear Tablas

with app.app_context():
    db.create_all()

Operaciones CRUD

# Crear
nuevo = Usuario(nombre="Ana", email="ana@mail.com")
db.session.add(nuevo)
db.session.commit()

# Leer
usuarios = Usuario.query.all()

# Actualizar
u = Usuario.query.first()
u.nombre = "Ana María"
db.session.commit()

# Eliminar
db.session.delete(u)
db.session.commit()

Consultas Avanzadas

# Filtrar
Usuario.query.filter_by(nombre="Ana").first()

# Filtros con condiciones
Usuario.query.filter(Usuario.email.like("%@gmail.com")).all()

Relaciones entre Tablas

class Pedido(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    cliente_id = db.Column(db.Integer, db.ForeignKey("usuario.id"))
    cliente = db.relationship("Usuario", backref="pedidos")

Ejercicio Guiado

  1. Configura SQLAlchemy con SQLite.
  2. Crea un modelo Usuario con nombre y correo.
  3. Inserta 3 usuarios en la base de datos.
  4. Realiza consultas para listar, actualizar y eliminar registros.