¿Cómo usar Go con MySQL?

MySQL es un sistema de gestión de bases de datos relacionales de código abierto basado en el lenguaje de consulta estructurado (SQL). Es una base de datos relacional que organiza los datos en una o más tablas en las que los datos se relacionan entre sí.

Controlador de base de datos: un controlador de base de datos implementa un protocolo para una conexión de base de datos. El Driver es como un adaptador que se conecta a una interfaz genérica a una base de datos específica. 

Configuración inicial:

Inicie el servidor MySQL e instale el controlador go MySQL con el siguiente comando.

go get -u github.com/go-sql-driver/mysql

Creando objeto de base de datos:

Cree un objeto de base de datos con sql.Open. En cambio, no se establece una conexión con MySQL, solo crea un objeto de base de datos que se puede usar más adelante. 

db, err := sql.Open("mysql", "<user>:<password>@tcp(127.0.0.1:3306)/<database-name>")

Reemplace 3306 si no usa MySQL en el puerto predeterminado.

Go

package main
 
import (
    "database/sql"
    "fmt"
    _ "github.com/go-sql-driver/mysql"
)
 
func main() {
     
    // create a database object which can be used
    // to connect with database.
    db, err := sql.Open("mysql", "root:passwd@tcp(0.0.0.0:3306)/user")
     
    // handle error, if any.
    if err != nil {
        panic(err)
    }
     
    // Now its  time to connect with oru database,
    // database object has a method Ping.
    // Ping returns error, if unable connect to database.
    err = db.Ping()
     
    // handle error
    if err != nil {
        panic(err)
    }
     
    fmt.Print("Pong\n")
     
    // database object has  a method Close,
    // which is used to free the resource.
    // Free the resource when the function
    // is returned.
    defer db.Close()
}

Producción:

figura 1.1

Ejecutar consulta de base de datos: se puede realizar una consulta de base de datos con Exec() y Query().

1. Creación de una tabla de base de datos con consulta SQL y Exec().

Go

package main
 
import (
    "database/sql"
    "fmt"
 
    _ "github.com/go-sql-driver/mysql"
)
 
func main() {
 
    // create a database object which can be used
    // to connect with database.
    db, err := sql.Open("mysql", "root:passwd@tcp(0.0.0.0:3306)/user")
     
    // handle error, if any.
    if err != nil {
        panic(err)
    }
     
    //  database object has a method called Exec,
    // it executes a database query, but it does
    // not return any row as result.
    // Here we create a database table with a SQL query.
    _, err = db.Exec("CREATE TABLE user(id INT NOT NULL, name VARCHAR(20),
                     PRIMARY KEY (ID));")
     
    // handle error
    if err != nil {
        panic(err)
    }
     
    fmt.Print("Successfully Created\n")
     
    // database object has  a method Close,
    // which is used to free the resource.
    // Free the resource when the function
    // is returned.
    defer db.Close()
}

Producción:

2. Insertar una fila en la tabla de la base de datos con consulta SQL en Query().

Go

package main
 
import (
    "database/sql"
    "fmt"
 
    _ "github.com/go-sql-driver/mysql"
)
 
func main() {
 
    // create a database object which can be used
    // to connect with database.
    db, err := sql.Open("mysql", "root:passwd@tcp(0.0.0.0:3306)/user")
     
    // handle error, if any.
    if err != nil {
        panic(err)
    }
     
    // database object has a method called Query,
    // It can execute a SQL query and return rows
    // as result. Here we insert a row into  the  table,
    // no row returned as result for this operation.
    _, err = db.Query("INSERT INTO user VALUES(1,'sam')")
     
    // handle error
    if err != nil {
        panic(err)
    }
     
    fmt.Print("Successfully  Inserted\n")
 
    // database object has  a method Close,
    // which is used to free the resource.
    // Free the resource when the function
    // is returned.
    defer db.Close()
}

Producción:

3. Usar la consulta SQL en Query() para devolver todas las filas de la tabla de usuarios. 

Go

package main
 
import (
    "database/sql"
    "fmt"
 
    _ "github.com/go-sql-driver/mysql"
)
 
func main() {
     
    // create a database object which can be
    // used to connect with database.
    db, err := sql.Open("mysql", "root:passwd@tcp(0.0.0.0:3306)/user")
     
    // handle error, if any.
    if err != nil {
        panic(err)
    }
     
    // Here a SQL query is used to return all
    // the data from the table user.
    result, err := db.Query("SELECT * FROM user")
     
    // handle error
    if err != nil {
        panic(err)
    }
     
    // the result object has a method called Next,
    // which is used to iterate through all returned rows.
    for result.Next() {
         
        var id int
        var name string
         
        // The result object provided Scan  method
        // to read row data, Scan returns error,
        // if any. Here we read id and name returned.
        err = result.Scan(&id, &name)
         
        // handle error
        if err != nil {
            panic(err)
        }
         
        fmt.Printf("Id: %d Name: %s\n", id, name)
    }
 
    // database object has  a method Close,
    // which is used to free the resource.
    // Free the resource when the function
    // is returned.
    defer db.Close()
}

Producción:

Publicación traducida automáticamente

Artículo escrito por kabilan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *