Skip to content

Postgres

如果你想在 Go 中使用 PostgreSQL,通常会使用 pgxpq 这两个流行的库。以下是如何在 Go 中连接 PostgreSQL 数据库的基本示例。

使用 pgx 库连接 PostgreSQL

首先,确保安装了 pgx 库:

bash
go get github.com/jackc/pgx/v5

然后,使用以下代码来连接 PostgreSQL 数据库:

go
package main

import (
    "fmt"
    "log"
    "github.com/jackc/pgx/v5"
)

func main() {
    // 配置连接字符串
    connConfig, err := pgx.ParseConfig("postgres://username:password@localhost:5432/dbname")
    if err != nil {
        log.Fatalf("Unable to parse database URL: %v\n", err)
    }

    // 连接到数据库
    conn, err := pgx.ConnectConfig(context.Background(), connConfig)
    if err != nil {
        log.Fatalf("Unable to connect to database: %v\n", err)
    }
    defer conn.Close(context.Background())

    fmt.Println("Successfully connected to the database!")

    // 执行一个简单的查询
    var result string
    err = conn.QueryRow(context.Background(), "SELECT 'Hello, PostgreSQL!'").Scan(&result)
    if err != nil {
        log.Fatalf("Query failed: %v\n", err)
    }

    fmt.Println(result)
}

解释:

  1. pgx.ParseConfig() 解析数据库连接字符串。
  2. pgx.ConnectConfig() 用于连接到 PostgreSQL 数据库。
  3. conn.QueryRow() 执行查询,并使用 Scan() 获取结果。

使用 pq 库连接 PostgreSQL

pq 是 Go 中另一种常用的 PostgreSQL 驱动,首先安装它:

bash
go get github.com/lib/pq

然后,使用以下代码连接 PostgreSQL:

go
package main

import (
    "database/sql"
    "fmt"
    "log"
    _ "github.com/lib/pq"
)

func main() {
    // 配置连接字符串
    connStr := "user=username password=password dbname=yourdb sslmode=disable"
    
    // 打开数据库连接
    db, err := sql.Open("postgres", connStr)
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    // 测试连接
    err = db.Ping()
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println("Successfully connected to the database!")

    // 执行查询
    var result string
    err = db.QueryRow("SELECT 'Hello, PostgreSQL!'").Scan(&result)
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println(result)
}

解释:

  1. sql.Open("postgres", connStr) 连接到数据库。
  2. db.Ping() 用于确认连接是否成功。
  3. db.QueryRow() 用于执行查询并获取结果。

你可以根据需要选择 pgxpq,其中 pgx 提供更多的功能,比如更好的性能和更多的配置选项。