Một số trình điều khiển có sẵn nhưng bạn chỉ nên xem xét những trình điều khiển triển khai database / sql API dưới dạng
- nó cung cấp một cú pháp rõ ràng và hiệu quả,
- nó đảm bảo bạn có thể thay đổi trình điều khiển sau này mà không cần thay đổi mã của mình, ngoại trừ việc nhập và kết nối.
Hai trình điều khiển nhanh và đáng tin cậy có sẵn cho MySQL:
Tôi đã sử dụng cả hai trong số chúng trong quá trình sản xuất, các chương trình đang chạy trong nhiều tháng với số lượng kết nối lên đến hàng triệu mà không bị lỗi.
Các trình điều khiển cơ sở dữ liệu SQL khác được liệt kê trên go-wiki .
Nhập khi sử dụng MyMySQL:
import (
"database/sql"
_ "github.com/ziutek/mymysql/godrv"
)
Nhập khi sử dụng Go-MySQL-Driver:
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
Kết nối và đóng bằng 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
Kết nối và đóng bằng Go-MySQL-Driver:
con, err := sql.Open("mysql", store.user+":"+store.password+"@/"+store.database)
defer con.Close()
Chọn một hàng:
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)
Chọn nhiều hàng và tạo một mảng với kết quả:
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})
}
Chèn:
_, err = con.Exec("insert into tbl (id, mdpr, isok) values (?, ?, 1)", id, mdpr)
Bạn sẽ thấy rằng làm việc trong Go với MySQL là một trải nghiệm thú vị:Tôi không bao giờ đã gặp sự cố, máy chủ của tôi chạy trong nhiều tháng mà không có lỗi hoặc rò rỉ. Thực tế là hầu hết các hàm chỉ đơn giản lấy một số lượng đối số thay đổi làm nhẹ một nhiệm vụ tẻ nhạt trong nhiều ngôn ngữ.
Lưu ý rằng nếu trong tương lai, bạn cần sử dụng một trình điều khiển MySQL khác, bạn sẽ chỉ phải thay đổi hai dòng trong một tệp:dòng thực hiện nhập và dòng mở kết nối.