Volver a la página principal
miércoles 11 septiembre 2024
13

Cómo conectar a MySQL en Go

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.

Instalación del controlador MySQL

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.

Conectar a 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")
}

Explicación del código

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.

Formato del DSN

El DSN sigue el formato:

usuario:contraseña@tcp(dirección_servidor:puerto)/nombre_base_datos
  • usuario: Usuario de MySQL.
  • contraseña: Contraseña del usuario.
  • dirección_servidor: Dirección IP o nombre del host de MySQL.
  • puerto: Puerto en el que MySQL escucha, generalmente 3306.
  • nombre_base_datos: Nombre de la base de datos a la que te conectas.

Algunos ejemplos

  • Consulta básica:
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)
}
  • Insertar datos:
_, 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.

Etiquetas:
go mysql
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer