Construindo uma API REST para realizar operações CRUD com Python, FastAPI e Mysql

Desenvolva um aplicativo CRUD de alto desempenho com FastAPI, SQLAlchemy e MySQL

João Pedro Campos
3 min readMay 10, 2022
Fonte: https://github.com/tiangolo/fastapi

Olá, sou o João Pedro!

Neste artigo você aprenderá como construir uma API que realizará operações CRUD utilizando Python, FastAPI, SQLAlchemy e banco de dados MySQL.

Pré-requisitos

Introdução

Primeiramente precisamos instalar as dependências necessárias para a construção do projeto, são elas:

$ pip install fastapi uvicorn sqlalchemy pymsql

Sempre coloque as bibliotecas utilizadas no projeto em um arquivo requirements.txt. Neste caso:

# requirements.txtfastapi~=0.76.0
uvicorn~=0.17.6
SQLAlchemy~=1.4.36
pymysql~=1.0.2

Conectando ao banco de dados

Vamos configurar o SQLAlchemy para que ele saiba estabelecer uma conexão com o banco de dados.

Você deve configurar a string “DATABASE_URL” com seus dados de conexão ao banco de dados.

Caso queira ler mais sobre o SQLAlchemy, acesse seu site oficial.

Definindo Modelos de Dados usando SQLAlchemy

Nosso aplicativo possui apenas um modelo. Com a ajuda do SQLAlchemy podemos definir nosso modelo para interagir com nossa tabela “users” assim:

Nosso script do banco de dados ficará da seguinte maneira:

# db_script.txtcreate database crud_api;
use crud_api;
create table users(
id int AUTO_INCREMENT PRIMARY KEY,
name varchar(50) NOT NULL,
email varchar(50) NOT NULL,
password varchar(50) NOT NULL);

É bom guardar os dados de criação do banco de dados e tabelas em um arquivo txt, caso necessite utilizar mais tarde.

Validação e conversão de dados

Antes de entrar na implementação da API, vamos definir os modelos pydantic para validação de dados de entrada e saída dos endpoints da API.

Leia mais sobre validações de dados e gerenciamento de configurações usando anotações do tipo python em Pydantic.

Operações do CRUD e Exceções Personalizadas

Vamos definir as funções auxiliares para realizar operações CRUD no banco de dados. Essas funções serão usadas dentro dos endpoints da API REST.

Novamente, lembre-se de alterar os dados da string de conexão ao banco de dados dentro da função “create_engine()”.

Definindo as exceções personalizadas

Essas exceções falicitarão na notificação e na compreensão dos erros acontecidos.

Implementação da API REST

Defina o arquivo main (principal) e inclua as rotas ao app FastAPI:

Enfim, vamos iniciar o servidor FastAPI! Abra uma janela de terminal dentro do diretório do projeto e execute o seguinte comando:

$ uvicorn --reload main:app

A saída do comando deve parecida com isso:

A FastAPI gera documentação de API automaticamente utilizando OpenAPI (Swagger), você pode acessá-la em: http://127.0.0.1:8000/docs. Agora você pode testar sua API!

Concluímos a implementação de um aplicativo CRUD simples utilizando FastAPI, SQLAlchemy e MySQL.

Você pode baixar o projeto inteiro no meu repositório do GitHub. Deixe uma estrela se achar útil.

Espero ter lhe ajudado.

Obrigado pela leitura!

--

--