首頁 > 後端開發 > Golang > 主體

如何跨 Go HTTP 處理程序共用 MySQL 連線?

Patricia Arquette
發布: 2024-11-12 21:42:02
原創
960 人瀏覽過

How to Share a MySQL Connection Across Go HTTP Handlers?

在 Go HTTP 處理程序中共用 MySQL 連線

在 Go 中,管理資料庫連線與 database/sql 套件無縫連接。本指南深入概述如何建立 MySQL 連線並在 HTTP 處理程序之間共用它。

建立連線

main() 函數負責初始化資料庫連線。在這裡,您呼叫 sql.Open(),它會傳回一個連線池句柄,而不是單一連線。此句柄封裝了根據需要提供連接的邏輯,確保資源的高效利用。

db, err := sql.Open("mysql", "root:@/mydb?charset=utf8")
登入後複製

設定和 Ping

連接池建立後,您可以對其進行配置以滿足應用程式的需求。例如,您可以設定池中的最大空閒連線數:

db.SetMaxIdleConns(100)
登入後複製

要驗證資料庫的可用性,您應該在繼續之前執行ping:

err = db.Ping()
登入後複製

共用連線

共享連線的關鍵在於讓db 變數成為main() 和HTTP 處理程序都可以存取的全域變數。這確保了所有 goroutine 都可以使用相同的連接池。

var db *sql.DB // global variable to share between main and HTTP handlers
登入後複製

在 HTTP 處理程序中使用連線

在 HTTP 處理程序中,您可以使用共用連線與資料庫互動。例如,要從「hello」表中擷取資料:

func HomeHandler(w http.ResponseWriter, r *http.Request) {
    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)
    }
}
登入後複製

以上是如何跨 Go HTTP 處理程序共用 MySQL 連線?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板