使用Go语言的sqlx库进行连接池操作可以提高数据库连接的复用和性能。下面是一个简单的示例:
首先,你需要导入database/sql
和github.com/jmoiron/sqlx
包:
import (
"database/sql"
"github.com/jmoiron/sqlx"
)
然后,创建一个全局变量来存储数据库连接池对象:
var db *sqlx.DB
接下来,在应用程序初始化或启动时,使用sqlx.Open()
函数打开数据库连接,并设置最大连接数和空闲连接数:
func initDB() {
var err error
// 创建数据库连接
db, err = sqlx.Open("mysql", "username:password@tcp(host:port)/dbname")
if err != nil {
log.Fatal(err)
}
// 设置最大连接数和空闲连接数
db.SetMaxOpenConns(10) // 最大连接数为10个
db.SetMaxIdleConns(5) // 空闲连接数为5个
// 尝试建立一次连接以确保与数据库的连通性
err = db.Ping()
if err != nil {
log.Fatal(err)
}
}
在上述代码中,你需要替换掉 mysql://username:password@host:port/dbname
部分为你自己的数据库信息。
现在你可以在应用程序中使用全局变量 db
来执行SQL查询了:
rows, err := db.Query("SELECT * FROM table_name")
if err != nil {
log.Fatal(err)
}
defer rows.Close()
for rows.Next() {
// 处理每一行数据
var column1, column2 string
err := rows.Scan(&column1, &column2)
if err != nil {
log.Fatal(err)
}
fmt.Println(column1, column2)
}
if err = rows.Err(); err != nil {
log.Fatal(err)
}
以上代码展示了如何使用sqlx库进行数据库连接池操作,你可以根据自己的需求进行相应的修改和扩展。
内容由零声教学AI助手提供,问题来源于学员提问