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
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
- Python 3.6+ (usarei a versão 3.10 neste projeto)
- IDE (recomendo Pycharm ou Visual Studio Code)
- MySQL (utilizo o MySQL através do XAMPP)
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!