Trabalho com bancos de dados em Go: PostgreSQL e MongoDB para iniciantes

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalho com Bancos de Dados em Go: PostgreSQL e MongoDB para Iniciantes



Go (Golang) é uma linguagem compilada moderna que ganhou popularidade devido ao seu alto desempenho, simplicidade e suporte embutido para concorrência. Ao desenvolver serviços web e aplicações, surge quase sempre a necessidade de interagir com bancos de dados. Neste artigo, veremos como trabalhar com dois SGBDs populares: o relacional PostgreSQL e o orientado a documentos MongoDB. O material é voltado para desenvolvedores iniciantes que já conhecem os fundamentos do Go.



1. Preparação do Ambiente e Instalação dos Drivers



Antes de começar, certifique-se de que você tenha o Go instalado (versão 1.16+) e os SGBDs correspondentes em execução. Para trabalhar com PostgreSQL, será necessário o driver lib/pq, e para MongoDB, o driver oficial mongo-go-driver.



go get github.com/lib/pqgo get go.mongodb.org/mongo-driver/mongo


Crie um novo módulo:



go mod init example.com/db-demo


2. Trabalho com PostgreSQL em Go



PostgreSQL é um banco de dados relacional poderoso com suporte a SQL. Em Go, usamos o pacote padrão database/sql juntamente com o driver lib/pq.



2.1 Conexão ao Banco de Dados



Para conectar, é necessário especificar a string de conexão (DSN) no formato: host=... port=... user=... password=... dbname=... sslmode=disable.



package main

import ( "database/sql" "fmt" "log" _ "github.com/lib/pq")

func main() { connStr := "host=localhost port=5432 user=postgres password=secret dbname=testdb sslmode=disable" db, err := sql.Open("postgres", connStr) if err != nil { log.Fatal(err) } defer db.Close()

err = db.Ping() if err != nil { log.Fatal("Não foi possível conectar:", err) } fmt.Println("Conexão com PostgreSQL estabelecida!")}


2.2 Criação de Tabela e Operações CRUD



Vamos considerar a criação da tabela users e a execução de operações básicas.



// Criação da tabelacreateTable := `CREATE TABLE IF NOT EXISTS users (    id SERIAL PRIMARY KEY,    name VARCHAR(100) NOT NULL,    email VARCHAR(100) UNIQUE NOT NULL,    age INT);`

_, err = db.Exec(createTable)if err != nil { log.Fatal(err)}

// Inserção de dadossqlInsert := `INSERT INTO users (name, email, age) VALUES ($1, $2, $3) RETURNING id`var userID interr = db.QueryRow(sqlInsert, "Ivan Petrov", "ivan@example.com", 30).Scan(&userID)if err != nil { log.Fatal(err)}fmt.Printf("Usuário adicionado com ID: %d", userID)

// Consulta de dadosrows, err := db.Query("SELECT id, name, email, age FROM users")if err != nil { log.Fatal(err)}defer rows.Close()

for rows.Next() { var u struct { ID int Name string Email string Age int } err := rows.Scan(&u.ID, &u.Name, &u.Email, &u.Age) if err != nil { log.Fatal(err) } fmt.Printf("ID: %d, Nome: %s, Email: %s, Idade: %d", u.ID, u.Name, u.Email, u.Age)}


2.3 Uso de Consultas Preparadas



Consultas preparadas (prepared statements) aumentam a segurança e o desempenho, especialmente em operações repetitivas.



stmt, err := db.Prepare("UPDATE users SET age = $1 WHERE id = $2")if err != nil {    log.Fatal(err)}defer stmt.Close()

_, err = stmt.Exec(35, 1)if err != nil { log.Fatal(err)}fmt.Println("Idade do usuário atualizada")


3. Trabalho com MongoDB em Go



MongoDB é um banco de dados NoSQL orientado a documentos. Em Go, o trabalho com ele é feito através do driver oficial mongo-go-driver, que usa contextos para gerenciar o tempo de execução das operações.



3.1 Conexão ao MongoDB



pa                

Blogs

Book Recommendations