Conexiones de Flask a Bases de Datos MySQL
En este tutorial, aprenderemos cómo conectar una aplicación Flask a una base de datos MySQL. Para ello, utilizaremos la extensión flask-mysqldb.
Requisitos
- Python 3
- Flask
- MySQL
Instalación
Instalemos las dependencias necesarias:
pip install flask
pip install flask-mysqldb
Creación de la base de datos
Si aún no tienes una base de datos MySQL, puedes crearla utilizando la herramienta phpMyAdmin. En la pestaña Bases de datos, haz clic en el botón Crear y rellena los campos con los siguientes datos:
- Nombre:
flask_tutorial - Motor:
InnoDB - Collation:
utf8mb4_unicode_ci
Creación del modelo de datos
En nuestro caso, vamos a crear una base de datos con una tabla llamada usuarios que tendrá los siguientes campos:
id: El identificador del usuarionombre: El nombre del usuariocorreo electrónico: El correo electrónico del usuario
Para crear la tabla, ejecutamos el siguiente comando SQL:
CREATE TABLE usuarios (
id INT NOT NULL AUTO_INCREMENT,
nombre VARCHAR(255) NOT NULL,
correo_electronico VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);
Creación de la aplicación Flask
Creamos una nueva aplicación Flask:
from flask import Flask
app = Flask(__name__)
Importamos la extensión flask-mysqldb:
from flask_mysqldb import MySQL
Configuramos la conexión a la base de datos:
app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'root'
app.config['MYSQL_PASSWORD'] = 'password'
app.config['MYSQL_DATABASE'] = 'flask_tutorial'
mysql = MySQL(app)
Creación de la ruta /
En la ruta /, vamos a mostrar una lista de todos los usuarios:
@app.route('/')
def index():
# Realizamos una consulta a la base de datos
usuarios = mysql.query('SELECT * FROM usuarios')
# Devolvemos una lista de usuarios
return jsonify(usuarios)
Ejecución de la aplicación
Lanzamos la aplicación:
flask run
La aplicación se iniciará en el puerto 5000. Podemos acceder a ella en la siguiente dirección:
http://localhost:5000
Código completo
El código completo de la aplicación es el siguiente:
from flask import Flask
from flask_mysqldb import MySQL
app = Flask(__name__)
# Configuración de la conexión a la base de datos
app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'root'
app.config['MYSQL_PASSWORD'] = 'password'
app.config['MYSQL_DATABASE'] = 'flask_tutorial'
mysql = MySQL(app)
# Ruta `/`
@app.route('/')
def index():
# Realizamos una consulta a la base de datos
usuarios = mysql.query('SELECT * FROM usuarios')
# Devolvemos una lista de usuarios
return jsonify(usuarios)
if __name__ == '__main__':
app.run()
Ejercicio
Añade una nueva ruta /usuarios/<id> que devuelva los datos de un usuario específico.
Respuesta
@app.route('/usuarios/<id>')
def usuario(id):
# Realizamos una consulta a la base de datos
usuario = mysql.query('SELECT * FROM usuarios WHERE id = :id', id=id)
# Devolvemos los datos del usuario
return jsonify(usuario[0])
Conclusión
En este tutorial, hemos aprendido cómo conectar una aplicación Flask a una base de datos MySQL. Para ello, hemos utilizado la extensión `flask-mysqldb


