本文摘自php中文网,作者藏色散人,侵删。
下面由golang教程栏目给大家介绍Golang 全局sql数据库连接,希望对需要的朋友有所帮助!

Golang 如何把sql数据库连接写成全局的,不用每次频繁创建销毁,减少数据库消耗与代码复杂度。
数据库连接通常在model层下的db.go中定义(命名自定义,也可以是database或者sql,与数据库相关)
因为我这里是使用mongoDb所以为model/mgo.go
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | package model
import (
"context"
_ "fmt"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"log"
"time"
)
type mgo struct {
uri string
database string
}
var (
DB *mongo.Database
)
func Connect() (*mongo.Database, error) {
var m = &mgo{
"mongodb://localhost:27017" ,
"数据库名" ,
}
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
client, err := mongo.Connect(ctx, options.Client().ApplyURI(m.uri))
if err != nil {
log. Print (err)
}
DB = client.Database(m.database)
return DB, err
}
|
然后在main.go中初始化
1 2 3 4 | func main() {
model.Connect()
}
|
需要进行数据库操作时,直接调用model中的DB即可
1 2 3 | collection := model.DB.Collection( "表名" )
insertResult, err := collection.InsertOne(context.TODO(), "内容" )
|
mysql或者其它数据库或者gorm框架之类的,都是同理。
阅读剩余部分
相关阅读 >>
Go是什么语言
分享一些为phper准备的Go入门知识
[Go] Go语言实战-实现标题闪烁
基于Golang的手机号格式验证和邮箱格式验证
Golang查找文件是否存在的方法
总结 Go 的数据类型
Golang channel是什么
一个小技巧加快 Golang docker 镜像构建速度,避免频繁下载 Go mod
Golang 超时控制代码模版
Golang中的bee是指什么
更多相关阅读请进入《Go》频道 >>
老貘
一个与时俱进的Go编程知识库。
转载请注明出处:木庄网络博客 » 关于Golang 全局sql数据库连接