在 Go HTTP 處理程序中管理 MySQL 連線
Go 中的 database/sql 套件處理資料庫連線並自動管理連線池。當呼叫 sql.Open() 時,它會傳回一個管理連線池的句柄。此句柄根據需要建立新連接,確保始終有可用的連接用於資料庫操作。
共享資料庫連接句柄
在您的程式碼中,您建立了一個main() 函數中類型為 *sql.DB 的全域變數 db。此變數表示連接池句柄。若要與 HTTP 處理程序共用它,您可以將資料庫句柄作為參數傳遞給處理程序函數。
在HTTP 處理程序中使用連接句柄
在HomeHandler 中函數中,您可以使用作為傳遞的資料庫句柄來存取資料庫連接參數:
import ( "database/sql" "fmt" ) func HomeHandler(w http.ResponseWriter, r *http.Request, db *sql.DB) { var msg string err := db.QueryRow("SELECT msg FROM hello WHERE page=?", "home").Scan(&msg) if err != nil { fmt.Fprintf(w, "Database Error!") } else { fmt.Fprintf(w, msg) } }
HTTP 處理程序註冊
在main() 函數中,註冊HTTP 處理程序時,可以將資料庫句柄作為參數傳遞:
import ( "github.com/gorilla/mux" ) func main() { fmt.Println("starting up") db, err := sql.Open("mysql", "root@unix(/tmp/mysql.sock)/mydb") if err != nil { log.Fatalf("Error on initializing database connection: %s", err.Error()) } r := mux.NewRouter() r.HandleFunc("/", HomeHandler(db)) // Pass the db handle as an argument to the handler http.Handle("/", r) http.ListenAndServe(":8080", nil) }
依照以下步驟,你可以在Go 中有效地分享HTTP goroutine 之間的MySQL 連線。 Database/sql 套件的自動連線池可確保最佳效能和資源管理。
以上是如何在 Go HTTP 處理程序之間共用 MySQL 連線句柄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!