Como usar Python para consumir uma API e alimentar um banco de dados relacional
Hoje vou mostrar como usar a linguagem de programação Python, para consumir uma API Rest usando o pacote requests e alimentar um banco de dados no SQLite.
Para isso, vamos definir a nossa API. Vou usar uma API pública do Calendarific, que reúne os feriados do ano inteiro.
Então, a primeira coisa que precisamos quando selecionamos a API é da sua URL Base, é por ela que vamos nos conectar ao banco de dados da plataforma e requisitar as suas . No caso do Calendarific, a sua URL é a seguinte: https://calendarific.com/api/v2
. A partir desse link é possível enviar requisições para o aplicativo e esperar que ele mande uma resposta.
API Key (Chave de acesso)
Em alguns serviços, é necessário ter uma chave para fazer as requisições. Isso é importante pois a partir dessa chave é possível, para a plataforma, poder controlar a quantidade de chamadas que cada usuário pode fazer. Impedindo um usuário de fazer várias chamadas por segundo, fazendo com que o sistema da plataforma fique inacessível para outras pessoas.
Para pedir a sua chave no site do Calendarific, é muito simples. Basta criar uma conta, e a partir dessa conta, ir em calendarific.com/account
e lá vai estar a sua “API Key”. É importante salvar essa chave, pois ela vai ser importante para fazer as requisições dentro do python.
É uma boa prática criar um script com o nome de secrets.py
, nele você vai colocar informação sensível que não é uma boa compartilhar com o público.
Com esse arquivo criado, é possível importar dentro do script principal e acessar o atributo API_KEY
e conseguir acesso à plataforma.
requests
Vamos usar a biblioteca requests para enviar requisições à URL Base. A partir dessa URL Base, vamos definir quais parâmetros queremos que a plataforma pesquise e envie para nossa aplicação.
A partir da documentação oficial da API é possível pesquisar quais Endpoints, podemos acessar para receber a resposta.
Endpoints nada mais é do que uma seção da API oficial. No caso do Calendarific, temos 3 endpoints.
- /holidays : Lista de feriados baseado nos parâmetros passados pelo url
- /languages: Lista de línguas que a API suporta.
- /countries: Lista de países e linguagens que a API suporta.
O que nós queremos é a lista de feriados, então vamos usar esse Endpoint. Para ter acesso a ele é só colocar o endpoint no final da URL Base:
https://calendarific.com/api/v2/holidays/
Também é preciso colocar a nossa Chave de Acesso como parâmetro da URL.
https://calendarific.com/api/v2/holidays?api_key=123abc***
Com esses blocos, é possível fazer a requisição dos dados da API.
Resposta da API
Para entender melhor como desenhar a estrutura do banco de dados, é necessário entender quais informações a API responde, e quais informações são úteis para o seu projeto.
O seguinte script em Python, usa a biblioteca requests, a chave de acesso e a URL Base com a endpoint e os parâmetros para buscar os feriados.
Vemos que a resposta é uma lista de dicionários, e alguns dicionários possuem dicionários em si.
Agora é observar quais informações são importantes para nós.
SQLite3
Usaremos a interface do SQLite para guardar nossas informações. Mais especificamente, a biblioteca sqlite3
nativa do python.
A primeira coisa a se fazer é construir o nosso banco de dados.
Com a tabela criada com as colunas que queremos, vamos alimentá-la com os dados da API que recebemos.
Pronto! Agora temos um banco de dados com os dados que recebemos da requisição API que fizemos.