Pesquisa de site

Como usar API rápida com banco de dados relacional no Ubuntu


Introdução

FastAPI rapidamente ganhou popularidade como uma estrutura web de alto desempenho e fácil de usar para construir APIs com Python. Quando combinado com um banco de dados relacional, o FastAPI pode ser usado para criar aplicativos poderosos e escalonáveis. Este guia orientará você no processo de configuração de um aplicativo FastAPI com um banco de dados relacional em uma máquina Ubuntu 24.04. Abordaremos tudo, desde a instalação das ferramentas necessárias até a configuração do banco de dados e a criação de endpoints de API.

Use FastAPI com banco de dados PostgreSQL

  • Configuração do ambiente Python
  • Criar e ativar ambiente virtual
  • Instalar e configurar o PostgreSQL
  • Criar aplicativo FastAPI
  • Instale as bibliotecas necessárias
  • Execute o aplicativo Python
  • Testar endpoints de aplicativos FastAPI

Pré-requisitos

Antes de seguir as etapas deste tutorial, você precisa:

  • Um servidor executando Ubuntu junto com um usuário não root com privilégios sudo e um firewall ativo. Para obter orientação sobre como configurar isso, escolha sua distribuição nesta lista e siga nosso guia de configuração inicial do servidor. Certifique-se de trabalhar com uma versão compatível do Ubuntu.

  • Familiaridade com a linha de comando do Linux. Para uma introdução ou atualização sobre a linha de comando, você pode visitar este guia no Linux Command Line Primer.

  • Execute sudo apt-get update no terminal Ubuntu para garantir que seu sistema tenha as versões mais recentes e atualizações de segurança para o software disponíveis nos repositórios configurados em seu sistema.

Estas instruções são válidas para as versões mais recentes do Ubuntu: Ubuntu 24.04, Ubuntu 22.04 e Ubuntu 20.04. Se você estiver usando a versão do Ubuntu <= 18.04, recomendamos que você atualize para uma versão mais recente, pois o Ubuntu não oferece mais suporte para essas versões. Esta coleção de guias irá ajudá-lo a atualizar sua versão do Ubuntu.

Etapa 1 - Configuração do ambiente Python

O Ubuntu 24.04 vem com o Python 3 por padrão. Abra o terminal e execute o seguinte comando para verificar a instalação do Python 3:

python3 --version

Se o Python 3 já estiver instalado em sua máquina, este comando retornará a versão atual da instalação do Python 3. Caso não esteja instalado, você pode executar o seguinte comando e obter a instalação do Python 3:

sudo apt install python3

Em seguida, você precisa instalar os instaladores dos pacotes pip e dev em seu sistema. Execute o seguinte comando no terminal:

sudo apt install python3-pip python3-dev

Neste tutorial, usaremos PostgreSQL como nosso banco de dados relacional. Para interagir com o banco de dados PostgreSQL, você precisa instalar o libpq-dev usando o seguinte comando:

sudo apt install libpq-dev

Passo 2 - Criar e Ativar Ambiente Virtual

Se você estiver usando o Ubuntu versão <24.04, não será necessário criar um ambiente virtual. Você pode pular para a próxima etapa.

A próxima etapa é criar um ambiente virtual dentro da instalação do Ubuntu para isolar os pacotes Python do ambiente do sistema. Para fazer isso, vá para o seu diretório de trabalho e execute o seguinte conjunto de comandos:

python3 -m venv fastapi-env

Este comando criará um novo ambiente virtual em um diretório chamado fastapi-env. Terá seu próprio conjunto de pacotes Python dedicados, isolados de outros projetos.

Para garantir que os pacotes que você instalar a partir deste momento sejam instalados dentro deste ambiente isolado, você precisa ativá-lo executando:

source fastapi-env/bin/activate

Na execução, você notará o prompt do terminal prefixado com o nome do seu ambiente virtual assim:

(fastapi-env) ubuntu@user:

Passo 3 - Instalar e configurar o PostgreSQL

A próxima etapa é instalar o PostgreSQL (ou banco de dados relacional de sua preferência).

sudo apt install postgresql postgresql-contrib

Agora é hora de iniciar e habilitar o serviço PostgreSQL dentro do seu ambiente virtual.

sudo systemctl start postgresql
sudo systemctl enable postgresql

Você pode verificar o status do serviço PostgreSQL executando sudo systemctl status postgresql. Depois que o serviço estiver habilitado, ele será iniciado automaticamente na inicialização do sistema.

Para instalar e usar o PostgreSQL com FastAPI, você precisa instalar algumas coisas:

  1. asyncpg: Este é um driver PostgreSQL assíncrono que permite que FastAPI interaja com um banco de dados PostgreSQL.
  2. SQLAlchemy: Esta é uma ferramenta ORM que ajuda a gerenciar esquemas e consultas de banco de dados como código Python em vez de escrever SQL bruto.
  3. bancos de dados: Esta é uma biblioteca de banco de dados para operações assíncronas exigidas pelo SQLAlchemy para funcionar de forma assíncrona com FastAPI.

Para instalá-los, execute o seguinte comando consolidado:

pip install asyncpg sqlalchemy databases

Em seguida, crie um banco de dados Postgres e um usuário com os privilégios necessários.

sudo -u postgres psql
CREATE DATABASE <user_db>;
CREATE ROLE <username> WITH PASSWORD '<password>';
GRANT ALL PRIVILEGES ON DATABASE <user_db> TO <username>;
exit

Etapa 4 - Criar exemplo de aplicativo Python

Você precisa de um aplicativo Python executável que acesse seu banco de dados por meio do FastAPI. Se você não tiver um aplicativo Python em execução, poderá criar um rapidamente seguindo estas etapas:

Crie um novo arquivo Python chamado postgres_db.py no diretório do seu projeto.

nano postgres_db.py

No editor de texto, você escreverá lógica para criar conexão com o banco de dados e criar tabela dentro do banco de dados. Neste exemplo, criamos uma conexão de banco de dados PostgreSQL usando o pacote databases e definimos a estrutura de uma tabela books usando SQLAlchemy.

from databases import Database
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, Float

DB_URL = "postgresql://username:password@localhost/user_db"

database = Database(DB_URL)
metadata = MetaData()

books = Table (
  "books",
  metadata,
  Column("id", Integer, primary_key=True, index=True),
  Column("title", String, index=True),
  Column("author", String, index=True),
  Column("price", Float),
)

engine = create_engine(DB_URL)
metadata.create_all(engine)

Salve e feche o arquivo.

A seguir, crie um main.py dentro do mesmo diretório.

nano main.py

Escreva a lógica principal da sua aplicação neste arquivo:

from fastapi import FastAPI
from typing import List
from pydantic import BaseModel
from postgres_db import books, database

app = FastAPI()

class BookCreate(BaseModel):
    title: str
    author: str
    price: float

class BookResponse(BaseModel):
    id: int
    title: str
    author: str
    price: float

class Config:
  orm_mode=True

@app.on_event("startup")
async def startup():
    await database.connect()

@app.on_event("shutdown")
async def shutdown():
    await database.disconnect()

@app.post("/books/", response_model=BookResponse)
async def create_book(book: BookCreate):
    query = books.insert().values(title=book.title, author=book.author, price=book.price)
    last_book_id = await database.execute(query)

    query = books.select().where(books.c.id == last_book_id)
    inserted_book = await database.fetch_one(query)
    return inserted_book

@app.get("/books/", response_model=List[BookResponse])
async def get_books():
    query = books.select()
    return await database.fetch_all(query)

Este código usa FastAPI para escrever novas entradas de livros no banco de dados PostgreSQL e buscar a coleção de livros dele.

Passo 5 - Instale as bibliotecas necessárias

Em seu aplicativo Python, você está fazendo referência a várias bibliotecas e pacotes. Antes de executar o aplicativo, certifique-se de instalar as bibliotecas necessárias.

pip install fastapi uvicorn psycopg2

Etapa 6 - Execute o aplicativo Python

Agora é hora de executar o aplicativo que você criou.

uvicorn main:app --reload

uvicorn é uma interface de gateway de servidor assíncrona (ASGI) usada para atender aplicativos FastAPI. Usar uvicorn é a maneira preferida de executar um aplicativo FastAPI, já que FastAPI é uma estrutura web assíncrona.

Se o comando acima for executado sem encontrar um erro, você verá uma saída semelhante a esta:

INFO:     Will watch for changes in these directories: ['/path/to/your/project']
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [XXXX] using StatReload
INFO:     Started server process [YYYY]
INFO:     Waiting for application startup.
INFO:     Application startup complete.

Em um navegador da web, navegue até http://127.0.0.1:8000 para ver o resultado da consulta.

Etapa 7 [OPCIONAL] – Teste os endpoints

Você pode testar os endpoints definidos em seu main.py (ou seja, POST e GET) enviando solicitações HTTP para o servidor em execução em http://127.0.0.1:8000.

{
  "title": "The Great Gatsby",
  "author": "F. Scott Fitzgerald",
  "price": 10.99
}

Da mesma forma, você pode fazer uma chamada GET para o mesmo servidor para recuperar a lista de livros presentes em seu banco de dados Postgres.

Conclusão

Neste tutorial, você percorreu o processo de configuração de um aplicativo FastAPI simples que interage com um banco de dados PostgreSQL. Essas etapas também são benéficas para aplicativos de IA, especialmente quando você precisa criar uma API web para interagir com seus modelos de IA ou gerenciar dados relacionados aos seus processos de IA. Com essa base estabelecida, agora você pode construir e expandir seus projetos FastAPI.

Fique ligado para mais artigos sobre como trabalhar com FastAPI.

Artigos relacionados: