Golang操作PostgreSQL
    		       		warning:
    		            这篇文章距离上次修改已过422天,其中的内容可能已经有所变动。
    		        
        		                
                
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连接池,并执行一个简单的查询操作。代码中包含了错误处理和上下文管理,这是编写生产级别的数据库操作代码时的标准做法。
评论已关闭