Desarrollo de API REST en Python con FastAPI y MySQL
En este tutorial, aprenderemos a desarrollar una API REST en Python utilizando FastAPI y MySQL. FastAPI es un framework web de Python que facilita el desarrollo de APIs RESTful. MySQL es un sistema de gestión de bases de datos relacionales (RDBMS) que se utiliza para almacenar datos de aplicaciones web.
Requisitos previos
Para seguir este tutorial, necesitarás lo siguiente:
- Una instalación de Python 3.8 o superior
- Un entorno virtual Python
- Una base de datos MySQL
Creación de un entorno virtual Python
Un entorno virtual Python es una forma de aislar los paquetes de Python de otros proyectos. Para crear un entorno virtual, ejecuta el siguiente comando en la terminal:
python -m venv .venv
Esto creará un directorio llamado .venv
en el directorio actual. Para activar el entorno virtual, ejecuta el siguiente comando:
source .venv/bin/activate
Instalación de FastAPI y MySQL Connector
Para instalar FastAPI, ejecuta el siguiente comando en la terminal:
pip install fastapi
Para instalar MySQL Connector, ejecuta el siguiente comando en la terminal:
pip install mysql-connector-python
Creación de un modelo de datos
El primer paso es crear un modelo de datos para nuestra base de datos. El modelo de datos define la estructura de los datos que almacenaremos en la base de datos.
Vamos a crear un modelo de datos simple para una tabla de usuarios. El modelo tendrá los siguientes campos:
id
: Un identificador único para cada usuarionombre
: El nombre del usuarioapellido
: El apellido del usuariocorreo electrónico
: La dirección de correo electrónico del usuario
Para crear el modelo de datos, crea un archivo llamado models.py
y agrega el siguiente código:
from sqlalchemy import Boolean, Column, Integer, String, create_engine
class User(BaseModel):
id = Column(Integer, primary_key=True)
nombre = Column(String(100))
apellido = Column(String(100))
correo_electronico = Column(String(100))
BaseModel.metadata.create_all(engine)
Este código crea una clase User
que hereda de la clase BaseModel
de SQLAlchemy. La clase BaseModel
proporciona una serie de métodos y atributos para trabajar con modelos de datos.
La clase User
tiene los siguientes campos:
id
: Un campoInteger
que es el identificador único para cada usuarionombre
: Un campoString
que contiene el nombre del usuarioapellido
: Un campoString
que contiene el apellido del usuariocorreo_electronico
: Un campoString
que contiene la dirección de correo electrónico del usuario
El método create_all()
crea las tablas de la base de datos.
Creación de una conexión a la base de datos
Ahora que tenemos un modelo de datos, necesitamos crear una conexión a la base de datos.
Para crear una conexión a la base de datos, crea un archivo llamado config.py
y agrega el siguiente código:
import os
DB_HOST = os.getenv("DB_HOST", "localhost")
DB_PORT = os.getenv("DB_PORT", 3306)
DB_DATABASE = os.getenv("DB_DATABASE", "mi_base_de_datos")
DB_USERNAME = os.getenv("DB_USERNAME", "root")
DB_PASSWORD = os.getenv("DB_PASSWORD", "")
engine = create_engine(
f"mysql+pymysql://{DB_USERNAME}:{DB_PASSWORD}@{DB_HOST}:{DB_PORT}/{DB_DATABASE}"
)
Este código establece las siguientes variables de entorno:
DB_HOST
: La dirección del host de la base de datosDB_PORT
: El puerto de la base de datosDB_DATABASE
: El nombre de la base de datosDB_USERNAME
: El nombre de usuario de la base de datosDB_PASSWORD
: La contraseña de la base de datos
El código también crea una conexión a la base de datos utilizando la biblioteca MySQL Connector.
Creación de una API REST
Ahora que tenemos una conexión a la base de datos