Introdução ao sqlx: poderosa extensão do database/sql para Go
\n\nA 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.
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
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\nInstalação do sqlx
\n\nA instalação do sqlx em um projeto Go é feita da maneira padrão através do gerenciador de pacotes go get:
go get github.com/jmoiron/sqlx\n\nVocê também precisará instalar o driver para o banco de dados específico. Por exemplo, para PostgreSQL:
\n\ngo get github.com/lib/pq\n\nPara MySQL:
\n\ngo get github.com/go-sql-driver/mysql\n\nPara SQLite:
\n\ngo get github.com/mattn/go-sqlite3\n\nApós a instalação, você pode importar a biblioteca no seu código:
\n\nimport (\n "github.com/jmoiron/sqlx"\n _ "github.com/lib/pq" // driver PostgreSQL\n)\n\nInício rápido: primeiro exemplo com sqlx
\n\nVamos 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\npackage 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\nNeste 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).
Principais métodos e funções do sqlx
\n\nVamos examinar 10 métodos principais da biblioteca sqlx com descrição detalhada e exemplos.
\n\n1. sqlx.Connect
\nO que faz: Estabelece uma conexão com o banco de dados e a verifica (executa ping). Esta é a maneira mais conveniente de se conectar.
\nParâmetros:
\n- \n
driverName(string) — nome do driver (por exemplo, "postgre
Também na biblioteca
Geração de PDF em JavaScript (Node.js): bibliotecas e ferramentas para criar PDF
Geração Swagger/OpenAPI para TypeScript: melhores ferramentas