Mysql
 sql >> Database >  >> RDS >> Mysql

Qual è il modo consigliato per connettersi a MySQL da Go?

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.