栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在http goroutines之间共享mysql连接?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在http goroutines之间共享mysql连接?

数据库/ sql程序包会自动为您管理连接池。

sql.Open(..)
返回 代表连接池 而不是单个连接的句柄。如果池中的所有连接都忙,则数据库/ sql软件包会自动打开一个新连接。

将其应用于代码意味着,您只需要共享db-handle并在HTTP处理程序中使用它:

package mainimport (    "database/sql"    "fmt"    "github.com/gorilla/mux"    _ "github.com/go-sql-driver/mysql"    "log"    "net/http")var db *sql.DB // global variable to share it between main and the HTTP handlerfunc main() {    fmt.Println("starting up")    var err error    db, err = sql.Open("mysql", "root@unix(/tmp/mysql.sock)/mydb") // this does not really open a new connection    if err != nil {        log.Fatalf("Error on initializing database connection: %s", err.Error())    }    db.SetMaxIdleConns(100)    err = db.Ping() // This DOES open a connection if necessary. This makes sure the database is accessible    if err != nil {        log.Fatalf("Error on opening database connection: %s", err.Error())    }    r := mux.NewRouter()    r.HandleFunc("/", HomeHandler)    http.Handle("/", r)    http.ListenAndServe(":8080", nil)}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)    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/435179.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号