SQLAlchemy es una biblioteca de mapeo objeto-relacional (ORM) en Python que proporciona una forma más sencilla y orientada a objetos de interactuar con bases de datos relacionales. En Flask, puedes usar SQLAlchemy para interactuar con la base de datos de manera eficiente. Aquí tienes un ejemplo de cómo usar SQLAlchemy en una aplicación Flask:
Paso 1: Instalar SQLAlchemy
Primero, debes asegurarte de que SQLAlchemy esté instalado en tu entorno virtual:
pip install Flask-SQLAlchemy
Paso 2: Configurar SQLAlchemy en tu Aplicación
En tu archivo principal de Flask (por ejemplo, app.py
), configura SQLAlchemy para que funcione con tu aplicación:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
# Configura la URI de la base de datos (en este ejemplo, SQLite)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///mi_basededatos.db'
db = SQLAlchemy(app)
# Define el modelo de datos Usuario
class Usuario(db.Model):
id = db.Column(db.Integer, primary_key=True)
nombre = db.Column(db.String(80), nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
@app.route('/')
def index():
# Crear una nueva entrada en la base de datos (ejemplo)
nuevo_usuario = Usuario(nombre='Beastieux', email='info@beastieux.com')
db.session.add(nuevo_usuario)
db.session.commit()
# Consultar datos de la base de datos (ejemplo)
usuarios = Usuario.query.all() # Obtener todos los usuarios
# Mostrar los nombres de los usuarios
nombres_usuarios = [usuario.nombre for usuario in usuarios]
return 'Nombres de usuarios: ' + ', '.join(nombres_usuarios)
if __name__ == '__main__':
app.run()
Una vez que hayas definido tus modelos de datos, puedes crear y actualizar la base de datos usando las migraciones de SQLAlchemy. Ejecuta estos comandos en tu terminal:
flask db init # Inicializar migraciones (solo una vez)
flask db migrate # Generar una migración inicial
flask db upgrade # Aplicar la migración a la base de datos
Para consulta usuarios:
usuarios = Usuario.query.all() # Obtener todos los usuarios
usuario = Usuario.query.filter_by(nombre='John Doe').first() # Obtener un usuario por nombre