Налични са няколко драйвера, но трябва да имате предвид само тези, които прилагат database/sql API като
- осигурява чист и ефективен синтаксис,
- то гарантира, че по-късно можете да промените драйвера, без да променяте кода си, освен импортирането и връзката.
Два бързи и надеждни драйвера са налични за MySQL :
Използвал съм ги и двата в производството, програмите работят месеци наред с милиони номера на връзките без отказ.
Други драйвери за SQL база данни са изброени в go-wiki .
Импортиране при използване на MyMySQL :
import (
"database/sql"
_ "github.com/ziutek/mymysql/godrv"
)
Импортиране при използване на Go-MySQL-Driver :
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
Свързване и затваряне с помощта на 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
Свързване и затваряне с помощта на Go-MySQL-Driver :
con, err := sql.Open("mysql", store.user+":"+store.password+"@/"+store.database)
defer con.Close()
Изберете един ред :
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)
Изберете няколко реда и създайте масив с резултати:
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})
}
Вмъкване:
_, err = con.Exec("insert into tbl (id, mdpr, isok) values (?, ?, 1)", id, mdpr)
Ще видите, че работата в Go с MySQL е приятно изживяване:аз никога имах проблем, сървърите ми работят месеци без грешки или течове. Фактът, че повечето функции просто приемат променлив брой аргументи, облекчава задачата, която е досадна на много езици.
Имайте предвид, че ако в бъдеще трябва да използвате друг драйвер за MySQL, просто ще трябва да промените два реда във файл:реда, който извършва импортирането и реда, отварящ връзката.