Avatar ·

Maneira recomendada de conectar ao MySQL a partir do Go: drivers, pools de conexão e best practices

Olá a todos! Sou um desenvolvedor Go iniciante, migrando do Python, onde tudo era simples com SQLAlchemy. Agora estou escrevendo uma pequena REST API em Go (net/http puro) e preciso me conectar ao MySQL.

Li vários tutoriais, mas eles se contradizem. Alguns usam go-sql-driver/mysql, outros usam database/sql diretamente, e alguns recomendam ORMs como GORM. Estou completamente confuso.

Aqui está um exemplo do meu código atual, que montei rapidamente, mas parece improvisado:

package main

import (
    "database/sql"
    "fmt"
    _ "github.com/go-sql-driver/mysql"
)

func main() {
    db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/dbname")
    if err != nil {
        panic(err.Error())
    }
    defer db.Close()

    // Aqui não entendo: preciso chamar db.Ping()?
    // Preciso configurar um pool de conexões?
    // Como tratar erros corretamente?

    rows, err := db.Query("SELECT id, name FROM users")
}