Conectar Python, FastAPI y MySQL

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-python

Una 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 res

Por 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:app

Recordemos 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 😉

Leave a Reply

Your email address will not be published. Required fields are marked *

Discover more from Evilnapsis

Subscribe now to keep reading and get access to the full archive.

Continue reading