Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách được đề xuất để kết nối với MySQL từ Go là gì?

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Con trỏ động trong thủ tục được lưu trữ

  2. Cách dễ nhất để trích xuất ngày bắt đầu và ngày kết thúc nước rút từ db JIRA là gì?

  3. PHP PDO:việc chuẩn bị lại một câu lệnh ảnh hưởng đến hiệu suất như thế nào

  4. SQL Server 2005 có tương đương với kiểu dữ liệu ENUM của MySql không?

  5. Truy vấn SQL tối đa trên mỗi trang