Sono disponibili alcuni driver, ma dovresti considerare solo quelli che implementano il database/sql API come
- fornisce una sintassi pulita ed efficiente,
- ti assicura di poter modificare successivamente il driver senza modificare il codice, a parte l'importazione e la connessione.
Per MySQL sono disponibili due driver veloci e affidabili:
Li ho usati entrambi in produzione, i programmi sono in esecuzione da mesi con numeri di connessione nell'ordine di milioni senza errori.
Altri driver di database SQL sono elencati su go-wiki .
Importa quando usi MySQL:
import (
"database/sql"
_ "github.com/ziutek/mymysql/godrv"
)
Importa quando usi Go-MySQL-Driver :
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
Connessione e chiusura tramite MySQL :
con, err := sql.Open("mymysql", database+"/"+user+"/"+password)
defer con.Close()
// here you can use the connection, it will be closed when function returns
Connessione e chiusura tramite Go-MySQL-Driver :
con, err := sql.Open("mysql", store.user+":"+store.password+"@/"+store.database)
defer con.Close()
Seleziona una riga :
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)
Seleziona più righe e crea una matrice con i risultati:
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})
}
Inserisci :
_, err = con.Exec("insert into tbl (id, mdpr, isok) values (?, ?, 1)", id, mdpr)
Vedrai che lavorare in Go con MySQL è un'esperienza deliziosa:io mai avuto un problema, i miei server funzionano per mesi senza errori o perdite. Il fatto che la maggior parte delle funzioni prenda semplicemente un numero variabile di argomenti alleggerisce un compito che è noioso in molte lingue.
Nota che se, in futuro, hai bisogno di usare un altro driver MySQL, dovrai solo cambiare due righe in un file:la riga che esegue l'importazione e la riga che apre la connessione.