关于Golang 全局sql数据库连接


本文摘自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 //要连接的数据库

    //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中初始化

1

2

3

4

func main() {

  //初始化mongodb

  model.Connect()

}

需要进行数据库操作时,直接调用model中的DB即可

1

2

3

collection := model.DB.Collection("表名")

//插入操作

insertResult, err := collection.InsertOne(context.TODO(), "内容")

mysql或者其它数据库或者gorm框架之类的,都是同理。

阅读剩余部分

相关阅读 >>

手撸Golang 结构型设计模式 门面模式

精心整理!9个 python 实用案例分享

java和Golang对比

详解Golang ssh连接服务器(模拟交互terminal)

Go入门-1 变量

Go语言怎么删除数组元素

Go指针

(一)Gof 通过epoll模型管理连接

Golang可以做些什么?

erlang和Golang的区别

更多相关阅读请进入《Go》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...