34
我是圍棋菜鳥,無法找到打開圍棋一個MySQL連接,然後處理HTTP之間共享它的任何一個完整的例子。這是我的代碼到目前爲止,我將如何使用我在HomeHandler中的main()中打開的數據庫連接?如何在http goroutines之間共享mysql連接?
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
"github.com/gorilla/mux"
"log"
"net/http"
)
func main() {
fmt.Println("starting up")
db, err := sql.Open("mysql", "root:@/mydb?charset=utf8")
if err != nil {
log.Fatalf("Error opening database: %v", err)
}
db.SetMaxIdleConns(100)
r := mux.NewRouter()
r.HandleFunc("/", HomeHandler)
http.Handle("/", r)
http.ListenAndServe(":8080", nil)
}
func HomeHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "home")
}
嗨朱利安,謝謝回答。不能期待比Go-MySQL-Driver的作者更好的源代碼!這似乎有可能是代碼中的一個錯字,我得到一個編譯錯誤:'./main.go:18:不能指定* sql.DB以分貝(類型sql.DB)在多個assignment' – Jason
對不起,我固定現在鍵入。 @ fmt.Println.MKO,這不起作用仍然是不正確的。數據庫/ sql的設計完全適用於像這樣的併發用例。 –
僅供參考,這裏有幾個簡單的例子,如何訪問數據庫中的HTTP處理程序: https://github.com/TechEmpower/FrameworkBenchmarks/blob/master/go/src/hello/hello.go –