sqlx para Go: guia completo com exemplos

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

Introdução ao sqlx: poderosa extensão do database/sql para Go

\n\n

A biblioteca sqlx é uma extensão popular do pacote padrão database/sql na linguagem Go. Ela não substitui o driver padrão, mas se sobrepõe a ele, adicionando funções convenientes para trabalhar com bancos de dados. Se você já escreveu em Go e precisou escanear manualmente linhas de resultados de consultas em estruturas, o sqlx parecerá uma verdadeira salvação.

\n\n

O objetivo principal do sqlx é simplificar e acelerar o desenvolvimento, eliminando código repetitivo do desenvolvedor. A biblioteca permite:

\n
    \n
  • Mapear automaticamente os resultados de consultas SQL para estruturas Go.
  • \n
  • Trabalhar com parâmetros nomeados em consultas.
  • \n
  • Realizar inserções em lote (batch insert).
  • \n
  • Usar métodos convenientes para trabalhar com prepared statements.
  • \n
  • Integrar-se com qualquer driver compatível com database/sql (PostgreSQL, MySQL, SQLite, etc.).
  • \n
\n\n

No site PythonLib.ru, frequentemente falamos sobre ferramentas úteis para desenvolvedores. Hoje, vamos detalhar o sqlx — uma biblioteca essencial para todo desenvolvedor Go que trabalha com bancos de dados.

\n\n

Instalação do sqlx

\n\n

A instalação do sqlx em um projeto Go é feita da maneira padrão através do gerenciador de pacotes go get:

\n\n
go get github.com/jmoiron/sqlx
\n\n

Você também precisará instalar o driver para o banco de dados específico. Por exemplo, para PostgreSQL:

\n\n
go get github.com/lib/pq
\n\n

Para MySQL:

\n\n
go get github.com/go-sql-driver/mysql
\n\n

Para SQLite:

\n\n
go get github.com/mattn/go-sqlite3
\n\n

Após a instalação, você pode importar a biblioteca no seu código:

\n\n
import (\n    "github.com/jmoiron/sqlx"\n    _ "github.com/lib/pq" // driver PostgreSQL\n)
\n\n

Início rápido: primeiro exemplo com sqlx

\n\n

Vamos escrever um programa simples que se conecta a um banco de dados PostgreSQL, cria uma tabela, insere alguns registros e os exibe na tela.

\n\n
package main\n\nimport (\n    "fmt"\n    "log"\n    "github.com/jmoiron/sqlx"\n    _ "github.com/lib/pq"\n)\n\ntype User struct {\n    ID   int    `db:"id"`\n    Name string `db:"name"`\n    Age  int    `db:"age"`\n}\n\nfunc main() {\n    // Conexão com o banco de dados\n    db, err := sqlx.Connect("postgres", "user=postgres dbname=testdb sslmode=disable")\n    if err != nil {\n        log.Fatalln(err)\n    }\n    defer db.Close()\n\n    // Criação da tabela\n    schema := `CREATE TABLE IF NOT EXISTS users (\n        id SERIAL PRIMARY KEY,\n        name VARCHAR(100) NOT NULL,\n        age INTEGER NOT NULL\n    );`\n    db.MustExec(schema)\n\n    // Inserção de dados\n    db.MustExec("INSERT INTO users (name, age) VALUES ($1, $2)", "Alice", 30)\n    db.MustExec("INSERT INTO users (name, age) VALUES ($1, $2)", "Bob", 25)\n\n    // Consulta de dados\n    var users []User\n    err = db.Select(&users, "SELECT id, name, age FROM users")\n    if err != nil {\n        log.Fatalln(err)\n    }\n\n    fmt.Printf("Users: %+v\\n", users)\n}
\n\n

Neste exemplo, vemos os principais recursos do sqlx: mapeamento automático dos campos da estrutura (graças às tags db), o método Select para consultar várias linhas e o MustExec para executar consultas sem tratamento de erros (útil para prototipagem).

\n\n

Principais métodos e funções do sqlx

\n\n

Vamos examinar 10 métodos principais da biblioteca sqlx com descrição detalhada e exemplos.

\n\n

1. sqlx.Connect

\n

O que faz: Estabelece uma conexão com o banco de dados e a verifica (executa ping). Esta é a maneira mais conveniente de se conectar.

\n

Parâmetros:

\n
    \n
  • driverName (string) — nome do driver (por exemplo, "postgre

Recommendations