在包之间共享SQL连接的惯用方法是什么?

时间:2014-04-11 16:15:36

标签: go

我通常在主程序包

中声明一个公共Db变量
package main

var Db *sql.DB

func main() {
    var err error
    Db, err = sql.Open("sqlite3", BARS_FILE)
    if err != nil {
        log.Fatal(err)
    }

    defer Db.Close()
    // passing Db as a parameter to other functions in other packages (database 
    // repositories) 

}

有更好的方法吗?

1 个答案:

答案 0 :(得分:2)

根据http://golang.org/pkg/database/sql/#DB,以这种方式使用sql.DB是安全的:

  

DB是一个数据库句柄。多个并发使用是安全的   够程。

恕我直言,可以这样使用它。也许以后,当这个变量成为瓶颈时,你可以创建更多的句柄。如果许多gouroutines开始使用它可能会发生。但在有必要之前不要进行优化。