首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gin + Golang + DB连接池

Gin + Golang + DB连接池
EN

Stack Overflow用户
提问于 2017-11-29 12:08:26
回答 1查看 4.2K关注 0票数 1

我想了解GIN是如何确保每个HTTP请求获得唯一的DB (比如MySQL )连接的。下面是一个示例代码。如果您看到,由于'db‘是一个全局对象,因此,接口router.GET("/person/:age"...获取对DB的访问权限。现在有了load,我想GIN将在内部实现并发。如果是,那么它如何确保每个请求获得不同的连接。如果不是,则是单线程实现。谁能纠正我的理解。

代码语言:javascript
复制
package main

import (
    //  "bytes"
    "database/sql"
    "fmt"
    "github.com/gin-gonic/gin"
    _ "github.com/go-sql-driver/mysql"
    "net/http"
)

func checkErr(err error) {
    if err != nil {
        panic(err)
    } else {
        fmt.Println("successful...")
    }
}

func main() {
    db, err := sql.Open("mysql", "abfl:abfl@tcp(127.0.0.1:3306)/abfl?charset=utf8")
    checkErr(err)
    defer db.Close()
    // make sure connection is available
    err = db.Ping()
    checkErr(err)
    type User struct {
        age  int
        name string
    }
    router := gin.Default()
    // Add API handlers here
    // GET a user detail
    router.GET("/person/:age", func(c *gin.Context) {
        var (
            user   User
            result gin.H
        )
        age := c.Param("age")
        fmt.Println("input age : '%d'", age)
        row := db.QueryRow("select age, name from user where age = ?", age)
        err = row.Scan(&user.age, &user.name)
        fmt.Printf("user : %+v\n", user)
        if err != nil {
            // If no results send null
            result = gin.H{
                "user":  nil,
                "count": 0,
            }
        } else {
            result = gin.H{
                "age":   user.age,
                "name":  user.name,
                "count": 1,
            }
        }
        c.JSON(http.StatusOK, result)
    })
    router.Run(":3000")
}
EN

回答 1

Stack Overflow用户

发布于 2017-11-29 23:58:05

为每个HTTP请求建立一个新的SQL连接太繁重,没有任何意义。

在go中还没有用户可管理的连接池,它是由go实现在内部处理的。

sql.DB已经准备好并发使用,所以不用担心。

GIN与SQL连接一点关系都没有。正确处理查询/事务完全是您的责任。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47544906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档