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