Golang操作PostgreSQL
package main
import (
"context"
"fmt"
"log"
"time"
"github.com/jackc/pgx/v4"
"github.com/jackc/pgx/v4/pgxpool"
)
// 初始化数据库连接池
func initDBPool(connString string) (*pgxpool.Pool, error) {
config, err := pgxpool.ParseConfig(connString)
if err != nil {
return nil, err
}
config.MaxConns = 50
pool, err := pgxpool.ConnectConfig(context.Background(), config)
if err != nil {
return nil, err
}
return pool, nil
}
// 查询数据库
func queryDatabase(pool *pgxpool.Pool) {
// 创建一个5秒的超时上下文
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
// 执行查询
var name string
var age int
err := pool.QueryRow(ctx, "SELECT name, age FROM users WHERE id = $1", 1).Scan(&name, &age)
if err != nil {
log.Fatalf("查询错误: %v\n", err)
}
fmt.Printf("名字: %s, 年龄: %d\n", name, age)
}
func main() {
connString := "postgres://username:password@localhost:5432/database"
pool, err := initDBPool(connString)
if err != nil {
log.Fatalf("连接数据库错误: %v\n", err)
}
defer pool.Close()
queryDatabase(pool)
}
这段代码展示了如何使用pgx
库在Go语言中初始化一个PostgreSQL连接池,并执行一个简单的查询操作。代码中包含了错误处理和上下文管理,这是编写生产级别的数据库操作代码时的标准做法。
评论已关闭