ZBLOG

golang 数据库连接池

在Golang中,可以使用第三方库来实现数据库连接池。以下是一个示例,使用github.com/jmoiron/sqlx库和MySQL作为数据库:

package main

import (
	"fmt"
	"log"
	"time"

	"github.com/jmoiron/sqlx"
	_ "github.com/go-sql-driver/mysql"
)

var db *sqlx.DB

func initDB() {
	dataSourceName := "user:password@tcp(localhost:3306)/database"
	var err error
	db, err = sqlx.Open("mysql", dataSourceName)
	if err != nil {
		log.Fatal(err)
	}

	db.SetMaxOpenConns(10)  // 设置最大打开的连接数
	db.SetMaxIdleConns(5)   // 设置连接池中的最大空闲连接数
	db.SetConnMaxLifetime(time.Hour) // 设置连接的最大生命周期

	err = db.Ping()
	if err != nil {
		log.Fatal(err)
	}
}

func main() {
	initDB()
	defer db.Close()

	// 使用连接池进行数据库操作
	rows, err := db.Query("SELECT * FROM users")
	if err != nil {
		log.Fatal(err)
	}
	defer rows.Close()

	for rows.Next() {
		var id int
		var name string
        // ...
        
        // 解析数据...
        
        fmt.Println(id, name)
    }
    
    if rows.Err() != nil {
        log.Fatal(rows.Err())
    }
}

上述代码中,我们首先通过 sqlx.Open() 打开与数据库的连接,并设置了一些连接池参数,例如最大打开的连接数、最大空闲连接数和连接的最大生命周期。然后我们执行SQL查询,并通过Query()方法获取结果集。最后,我们可以遍历结果集并解析数据。

请注意,上述示例中使用了MySQL作为数据库示例,如果你需要连接其他类型的数据库,你可能需要导入相应的驱动并修改连接字符串。

希望以上示例能对你有所帮助!


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=7673

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?