Para conectar una base de datos MySQL en un proyecto Go, se utiliza el paquete database/sql
junto con un controlador como go-sql-driver/mysql
, que proporciona la interfaz necesaria para interactuar con MySQL. A continuación, te explico cómo configurar y realizar una conexión básica.
Primero, debes instalar el controlador MySQL para Go. Utiliza el siguiente comando en tu terminal:
go get -u github.com/go-sql-driver/mysql
Este paquete permite que Go se comunique con bases de datos MySQL.
Una vez instalado, puedes conectar a la base de datos MySQL de la siguiente manera:
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
// Configuración de conexión
dsn := "usuario:contraseña@tcp(127.0.0.1:3306)/nombre_base_datos"
// Establecer la conexión a la base de datos
db, err := sql.Open("mysql", dsn)
if err != nil {
panic(err)
}
defer db.Close()
// Verificar la conexión
err = db.Ping()
if err != nil {
panic(err)
}
fmt.Println("Conexión exitosa a la base de datos MySQL")
}
1. sql.Open()
: Abre una conexión a la base de datos. El primer parámetro es el controlador (mysql
), y el segundo es el Data Source Name (DSN), que incluye el usuario, la contraseña, la dirección del servidor y el nombre de la base de datos.
2. db.Ping()
: Verifica que la conexión sea exitosa.
3. defer db.Close()
: Asegura que la conexión se cierre cuando el programa finalice.
El DSN sigue el formato:
usuario:contraseña@tcp(dirección_servidor:puerto)/nombre_base_datos
3306
.
rows, err := db.Query("SELECT id, nombre FROM usuarios")
if err != nil {
panic(err)
}
defer rows.Close()
for rows.Next() {
var id int
var nombre string
err := rows.Scan(&id, &nombre)
if err != nil {
panic(err)
}
fmt.Printf("ID: %d, Nombre: %s\n", id, nombre)
}
_, err := db.Exec("INSERT INTO usuarios(nombre, email) VALUES(?, ?)", "Juan", "juan@example.com")
if err != nil {
panic(err)
}
fmt.Println("Usuario insertado con éxito")
Para más detalles sobre la integración de MySQL con Go, consulta la documentación oficial de go-sql-driver/mysql.
Jorge García
Fullstack developer