Golang 如何把sql数据库连接写成全局的,不用每次频繁创建销毁,减少数据库消耗与代码复杂度。
数据库连接通常在model层下的db.go中定义(命名自定义,也可以是database或者sql,与数据库相关)
因为我这里是使用mongoDb所以为model/mgo.go
代码:
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 //要连接的数据库
//collection 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中初始化
func main() {
//初始化mongodb
model.Connect()
}
需要进行数据库操作时,直接调用model中的DB即可
collection := model.DB.Collection("表名")
//插入操作
insertResult, err := collection.InsertOne(context.TODO(), "内容")
mysql或者其它数据库或者gorm框架之类的,都是同理。
本文来自php中文网的golang栏目:https://www.php.cn/be/go/
有疑问加站长微信联系(非本文作者)