Una de las funcionalidades más importantes que tiene Flask es la capacidad de conectarse a bases de datos, lo cual permite que las aplicaciones desarrolladas con este framework puedan almacenar y recuperar información de forma eficiente y segura. Para trabajar con bases de datos en Flask, es necesario utilizar una extensión de Flask llamada SQLAlchemy, la cual permite establecer conexión con una variedad de bases de datos como MySQL, PostgreSQL, SQLite, entre otras.
Para empezar a utilizar SQLAlchemy en una aplicación Flask, se debe instalar la extensión utilizando pip:
pip install flask-sqlalchemy
Luego de instalar la extensión, se debe crear una instancia de la clase SQLAlchemy, la cual es utilizada como interfaz entre Flask y la base de datos. La instancia se puede crear de la siguiente manera:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///mydb.db'
db = SQLAlchemy(app)
En el ejemplo anterior, se está definiendo una instancia de SQLAlchemy llamada 'db', la cual está conectada a una base de datos en SQLite llamada 'mydb.db'. Es importante destacar que Flask utiliza la URI de la base de datos para conectarse, la cual debe estar correctamente formateada y debe incluir información de autenticación si es necesario.
Una vez que se ha creado la instancia de SQLAlchemy, es posible definir los modelos de la aplicación, los cuales son representaciones de objetos que se almacenarán en la base de datos. Para definir un modelo, se debe crear una clase que herede de la clase Model de SQLAlchemy y se debe definir una serie de atributos que representen las columnas de la tabla en la base de datos.
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
En este caso se está definiendo un modelo llamado User, el cual tiene tres campos: id, username y email. El campo id es la clave primaria de la tabla y es de tipo Integer, mientras que los campos username y email son de tipo String y tienen un tamaño máximo de 80 y 120 caracteres respectivamente. Además, se está indicando que las columnas username y email son únicas y no pueden ser nulas.
Una vez que se han definido los modelos, es posible interactuar con la base de datos desde los controladores de la aplicación Flask utilizando los métodos definidos en la instancia de SQLAlchemy. Por ejemplo, para insertar un nuevo usuario en la base de datos, se puede escribir el siguiente código:
user = User(username='jdoe', email='jdoe@example.com')
db.session.add(user)
db.session.commit()
En este caso, se está creando una nueva instancia de la clase User con los valores de username y email especificados. Luego, se está agregando la instancia a la sesión de SQLAlchemy utilizando el método add y se está realizando un commit para guardar los cambios en la base de datos.
En resumen, conectar una base de datos con Flask requiere la utilización de una extensión llamada SQLAlchemy, la cual permite establecer la conexión a diferentes bases de datos y realizar operaciones utilizando ORM. Luego, se deben definir los modelos de la aplicación y utilizar la instancia de SQLAlchemy para interactuar con la base de datos desde los controladores.