Sono disponibili alcuni driver, ma è necessario considerare solo quelli che implementano l' API database / sql
- fornisce una sintassi pulita ed efficiente,
- ti assicura di poter cambiare il driver in seguito senza cambiare il tuo codice, a parte l'importazione e la connessione.
Sono disponibili due driver veloci e affidabili per MySQL:
Li ho usati entrambi in produzione, i programmi sono in esecuzione da mesi con numeri di connessione in milioni senza errori.
Altri driver di database SQL sono elencati su go-wiki .
Importa quando si utilizza MyMySQL:
import (
"database/sql"
_ "github.com/ziutek/mymysql/godrv"
)
Importa quando si utilizza Go-MySQL-Driver:
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
Connessione e chiusura tramite 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
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 un array con 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 su Go con MySQL è un'esperienza piacevole: non ho mai avuto problemi, 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 noioso in molte lingue.
Si noti che se, in futuro, è necessario utilizzare un altro driver MySQL, sarà sufficiente modificare due righe in un unico file: la riga che esegue l'importazione e la riga che apre la connessione.