Hay algunos controladores disponibles, pero solo debe considerar aquellos que implementan la base de datos / sql API como
- Proporciona una sintaxis limpia y eficiente.
- asegura que luego pueda cambiar el controlador sin cambiar su código, aparte de la importación y la conexión.
Hay dos controladores rápidos y confiables disponibles para MySQL:
Los utilicé en producción, los programas se están ejecutando durante meses con millones de conexiones sin fallar.
Otros controladores de bases de datos SQL se enumeran en go-wiki .
Importar al usar MyMySQL:
import (
"database/sql"
_ "github.com/ziutek/mymysql/godrv"
)
Importar cuando se utiliza 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
Conexión y cierre con 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 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 with MySQL es una experiencia encantadora: 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 idiomas.
Tenga en cuenta que si, en el futuro, necesita usar otro controlador MySQL, solo tendrá que cambiar dos líneas en un solo archivo: la línea que realiza la importación y la línea que abre la conexión.