12 Dias do DigitalOcean (Dia 2) – Conectando ao Seu Banco de Dados PostgreSQL com Python

Bem-vindo ao Dia 2 do 12 Dias de DigitalOcean! Ontem, começamos a construir nosso Serviço de Lembrete de Aniversário—um aplicativo simples que envia notificações por SMS para aniversários próximos. 🎉 Configuramos um banco de dados PostgreSQL na DigitalOcean para armazenar os detalhes de contato.

Hoje, vamos nos conectar a esse banco de dados usando Python e preparar nosso projeto para manter credenciais sensíveis seguras.

No final deste post, você terá um script Python que busca dados do seu banco de dados de forma segura e está pronto para escalar quando o hospedarmos na DigitalOcean.

✨ Por Que Esta Etapa?

Configurar o banco de dados foi apenas o começo. Para construir qualquer aplicativo significativo, precisamos de uma maneira de interagir com esses dados programaticamente. O Python facilita a conexão com bancos de dados PostgreSQL e, com a ajuda de uma biblioteca como pg8000, podemos trabalhar com bancos de dados PostgreSQL em apenas algumas linhas de código.

Para manter as coisas seguras, vamos armazenar nossas credenciais de banco de dados em um arquivo .env e carregá-las em nosso script usando python-dotenv. Isso garante que suas credenciais não estejam codificadas no script, tornando mais seguro compartilhar e implantar seu aplicativo.

🚀 O que você aprenderá

Aqui está o plano para hoje:

  1. Armazenar credenciais sensíveis em um arquivo .env.
  2. Usar python-dotenv para carregar essas credenciais em seu script.
  3. Escrever um script Python para conectar-se com segurança ao seu banco de dados PostgreSQL usando pg8000
  4. Buscar e exibir dados da tabela contacts

No final disso, você terá uma base sólida para construir a lógica do aplicativo.

🛠 O que você precisará

Antes de mergulharmos, aqui está o que você precisará:

  • O banco de dados que configuramos no Dia 1. TODO: Link para a URL do dia 1
  • Python instalado na sua máquina local (recomendamos Python 3.8+).

🧑‍🍳 Receita para o Dia 2: Conectando ao PostgreSQL com Python

Passo 1: Instale as Bibliotecas Necessárias 📦

Para conectar o Python ao PostgreSQL e manter nossas credenciais seguras, usaremos duas bibliotecas principais:

  • pg8000: Uma biblioteca pura de Python que permite conectar e interagir com bancos de dados PostgreSQL.
  • python-dotenv: Uma utilidade para carregar credenciais sensíveis (como nomes de usuário e senhas de banco de dados) de um arquivo .env, para que você não precise codificá-las diretamente em seu script.

Vamos instalá-las agora. Execute este comando no seu terminal:

pip install pg8000 python-dotenv

Dica Pro: Se você estiver usando um ambiente virtual (sempre uma boa ideia!), certifique-se de ativá-lo antes de executar o comando acima para manter suas dependências organizadas.

Passo 2: Crie um arquivo .env 📂

No diretório do seu projeto, crie um arquivo chamado .env. É aqui que armazenaremos nossas credenciais do banco de dados. Adicione o seguinte:

DB_HOST=<your-hostname>
DB_NAME=<your-database-name>
DB_USER=<your-username>
DB_PASSWORD=<your-password>

Substitua os valores de espaço reservado pelas credenciais do Dia 1.

Dica Profissional: Adicione .env ao seu arquivo .gitignore para garantir que suas credenciais não sejam acidentalmente enviadas para o controle de versão.

Passo 3: Crie um Script em Python 🐍

Crie um novo arquivo chamado connect_to_db.py e configure o script para carregar credenciais do .env usando python-dotenv e conectar-se ao nosso banco de dados.

Aqui está o código para começar:

# connect_to_db.py

import pg8000
from dotenv import load_dotenv
import os

# Carregar variáveis de ambiente do arquivo .env
load_dotenv()

# Detalhes da conexão do banco de dados
DB_HOST = os.getenv("DB_HOST")
DB_NAME = os.getenv("DB_NAME")
DB_USER = os.getenv("DB_USER")
DB_PASSWORD = os.getenv("DB_PASSWORD")
DB_PORT = int(os.getenv("DB_PORT"))

try:
    # Conectar ao banco de dados
    connection = pg8000.connect(
        host=DB_HOST,
        database=DB_NAME,
        user=DB_USER,
        password=DB_PASSWORD,
        port=DB_PORT
    )
    print("Connection successful!")
except Exception as e:
    print("An error occurred while connecting to the database:", e)
finally:
    if connection:
        connection.close()

Este script faz algumas coisas importantes:

  • Carrega credenciais de forma segura do seu arquivo .env.
  • Estabelece uma conexão com seu banco de dados usando pg8000.connect().
  • Imprime uma mensagem de sucesso ou erro dependendo do resultado.

Passo 4: Testar a Conexão ✅

Agora, vamos garantir que tudo funcione. Execute seu script:

python connect_to_db.py

Se tudo estiver configurado corretamente, você deve ver:

Connection successful!

Se houver um erro:

  • Verifique novamente os valores em seu arquivo .env.
  • Certifique-se de que seu endereço IP esteja adicionado às fontes de confiança do banco de dados (veja o Passo 6 do Dia 1).

Passo 5: Buscar Dados do Banco de Dados 🔍

Agora, vamos estender o script para buscar dados. Atualize seu script connect_to_db.py para incluir o seguinte:

# connect_to_db.py

import pg8000
from dotenv import load_dotenv
import os

# Carregar variáveis de ambiente do arquivo .env
load_dotenv()

# Detalhes da conexão com o banco de dados
DB_HOST = os.getenv("DB_HOST")
DB_NAME = os.getenv("DB_NAME")
DB_USER = os.getenv("DB_USER")
DB_PASSWORD = os.getenv("DB_PASSWORD")
DB_PORT = int(os.getenv("DB_PORT"))

try:
    # Conectar ao banco de dados
    connection = pg8000.connect(
        host=DB_HOST,
        database=DB_NAME,
        user=DB_USER,
        password=DB_PASSWORD,
        port=DB_PORT
    )
    print("Connection successful!")

    # Consultar o banco de dados
    cursor = connection.cursor()
    query = "SELECT * FROM contacts;"
    cursor.execute(query)
    records = cursor.fetchall()

    # Imprimir os resultados
    print("Contacts:")
    for record in records:
        print(record)

    # Fechar o cursor e a conexão
    cursor.close()
    connection.close()

except Exception as e:
    print("An error occurred:", e)

Este script agora:

  • Executa uma consulta para buscar todos os registros da tabela de contatos.
  • Imprime cada registro no console.

Nota: Se a tabela estiver vazia, não se preocupe! Você ainda pode verificar se o script é executado sem erros. Para testar, você pode rapidamente adicionar um contato de exemplo abrindo seu banco de dados usando psql (ou sua ferramenta preferida) e executando este comando SQL:

INSERT INTO contacts (first_name, last_name, birthday) 
VALUES ('Test', 'User', '1990-01-01');

Se você precisar de um lembrete sobre como usar psql ou quiser explorar ferramentas de interface como pgAdmin ou TablePlus, confira as instruções em Dia 1.

🎁 Conclusão

Aqui está o que você conseguiu hoje:

✅ Instalou as bibliotecas Python necessárias.
✅ Conectou-se ao seu banco de dados PostgreSQL da DigitalOcean usando Python.
✅ Buscou dados da tabela contacts com uma consulta simples.

Próximo passo: Amanhã, começaremos a adicionar lógica para encontrar aniversários próximos e enviar notificações por SMS usando Twilio. É aqui que o aplicativo começa a ganhar vida—fique ligado! 🚀

Source:
https://www.digitalocean.com/community/tutorials/connecting-to-postgresql-database-with-python