Dostępnych jest kilka sterowników, ale należy brać pod uwagę tylko te, które implementują database/sql API jako
- zapewnia czystą i wydajną składnię,
- zapewnia to, że możesz później zmienić sterownik bez zmiany kodu, poza importem i połączeniem.
Dostępne są dwa szybkie i niezawodne sterowniki dla MySQL:
Używałem ich obu w produkcji, programy działają od miesięcy z milionami połączeń bez awarii.
Inne sterowniki baz danych SQL są wymienione na go-wiki .
Importuj przy użyciu MyMySQL :
import (
"database/sql"
_ "github.com/ziutek/mymysql/godrv"
)
Importuj przy użyciu sterownika Go-MySQL-Driver:
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
Łączenie i zamykanie za pomocą 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
Łączenie i zamykanie za pomocą sterownika Go-MySQL-Driver:
con, err := sql.Open("mysql", store.user+":"+store.password+"@/"+store.database)
defer con.Close()
Wybierz jeden wiersz:
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)
Wybierz wiele wierszy i utwórz tablicę z wynikami:
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})
}
Wstaw:
_, err = con.Exec("insert into tbl (id, mdpr, isok) values (?, ?, 1)", id, mdpr)
Zobaczysz, że praca w Go z MySQL to wspaniałe doświadczenie:nigdy miał problem, moje serwery działają miesiącami bez błędów i wycieków. Fakt, że większość funkcji po prostu przyjmuje zmienną liczbę argumentów, ułatwia zadanie, które jest żmudne w wielu językach.
Zauważ, że jeśli w przyszłości będziesz musiał użyć innego sterownika MySQL, będziesz musiał zmienić tylko dwie linie w jednym pliku go :linię wykonującą import i linię otwierającą połączenie.