Conexiones de Flask a Bases de Datos MySQL

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 usuario
  • nombre: El nombre del usuario
  • correo electrónico: El correo electrónico del usuario

Para crear la tabla, ejecutamos el siguiente comando SQL:

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:

Python
from flask import Flask

app = Flask(__name__)

Importamos la extensión flask-mysqldb:

Python
from flask_mysqldb import MySQL

Configuramos la conexión a la base de datos:

Python
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:

Python
@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:

Python
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

Python
@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