Vamos a conectar FastAPI con MySQL para esto vamos a instalar el conector de mysql para python, con esto vamos a lograr guardar y obtener datos desde la base de datos MySQL.
En este ejemplo vamos a obtener un listado de categorias en formato JSON.
Lo primero que haremos sera instalar el conector de mysql para python, para ello usaremos el comando pip.
pip install mysql-connector-pythonUna vez instalado ya podremos usar el conector para conectarnos (valga la redundancia) a nuestro servidor mysql local.
Base de datos
En nuestra base de datos local tenemos la base de datos library2 y una simple tabla categorias.
create database library2;
use library2;
create table category (
id int not null auto_increment primary key,
name varchar(200) not null
);
insert into category (name) values("Cat 1"), ("Cat 2"), ("Cat 3");Una vez que creamos la base de datos y la tabla y agregamos unos cuantos elementos a la tabla categoria.
Codigo
Creamos un endpoint llamado /categorias/ el cual nos va a devolver el listado de categorias en formato json.
from fastapi import FastAPI
import mysql.connector
import json
config = {
"user":"root",
"password":"",
"host":"localhost",
"database":"library2"
}
app = FastAPI()
@app.get("/categorias/")
def get_books():
res = {}
data = []
try:
db = mysql.connector.connect(**config)
cursor = db.cursor()
cursor.execute("SELECT * FROM category")
result = cursor.fetchall()
for row in result:
data.append({
"id": row[0],
"name": row[1],
})
res = json.dumps(data)
except mysql.connector.Error as err:
return {"error": str(err)}
return resPor esta ocasion pusimos los datos de conexion a la base de datos visibles para propositos de educacion, pero en la practica estos datos se deven obtener de variables de entorno u otras tecnicas.
La funcion get_books() se ejecuta con el endpoint /categorias/ y nos devuelve el listado de categorias.
Para ejecutar el script usamos uvicorn.
uvicorn mysqlfastapi:appRecordemos que el primer parametro es el nombre de nuestro archivo sin la extension .py y despues de los dos puntos esta la instancia de fast api quedando… mysqlfastapi:app
Y el resultado en el navegador en la url http://127.0.0.1:8000/categorias/
"[{\"id\": 1, \"name\": \"Cat 1\"}, {\"id\": 2, \"name\": \"Cat 2\"}, {\"id\": 3, \"name\": \"Cat 2\"}]"Datos listos para manejar desde el frontend.
Y esto sera todo amigos, nos leemos en un proximo articulo 😉