sql >> Base de Datos >  >> RDS >> Mysql

¿Cuál es la forma recomendada de conectarse a MySQL desde Go?

Hay algunos controladores disponibles, pero solo debe considerar aquellos que implementan database/sql API como

  • proporciona una sintaxis limpia y eficiente,
  • garantiza que más tarde pueda cambiar el controlador sin cambiar su código, además de la importación y la conexión.

Dos controladores rápidos y confiables están disponibles para MySQL:

He usado ambos en producción, los programas se ejecutan durante meses con números de conexión de millones sin fallar.

Otros controladores de bases de datos SQL se enumeran en go-wiki .

Importar al usar MySQL:

import (
    "database/sql"
    _ "github.com/ziutek/mymysql/godrv"
)

Importar al usar Go-MySQL-Driver:

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

Conectando y cerrando usando MyMySQL:

con, err := sql.Open("mymysql", database+"/"+user+"/"+password)
defer con.Close()
// here you can use the connection, it will be closed when function returns

Conectando y cerrando usando Go-MySQL-Driver:

con, err := sql.Open("mysql", store.user+":"+store.password+"@/"+store.database)
defer con.Close()

Seleccione una fila:

row := con.QueryRow("select mdpr, x, y, z from sometable where id=?", id)
cb := new(SomeThing)
err := row.Scan(&cb.Mdpr, &cb.X, &cb.Y, &cb.Z)

Seleccione varias filas y cree una matriz con los resultados:

rows, err := con.Query("select a, b from item where p1=? and p2=?", p1, p2)
if err != nil { /* error handling */}
items := make([]*SomeStruct, 0, 10)
var ida, idb uint
for rows.Next() {
    err = rows.Scan(&ida, &idb)
    if err != nil { /* error handling */}
    items = append(items, &SomeStruct{ida, idb})
}

Insertar:

_, err = con.Exec("insert into tbl (id, mdpr, isok) values (?, ?, 1)", id, mdpr)

Verá que trabajar en Go con MySQL es una experiencia encantadora:yo nunca tuve un problema, mis servidores funcionan durante meses sin errores ni fugas. El hecho de que la mayoría de las funciones simplemente toman un número variable de argumentos aligera una tarea que es tediosa en muchos lenguajes.

Tenga en cuenta que si, en el futuro, necesita usar otro controlador MySQL, solo tendrá que cambiar dos líneas de una sola vez:la línea que realiza la importación y la línea que abre la conexión.