Golang如何连接Postgres数据库
Golang如何连接Postgres数据库 我想创建一个使用PostgreSQL数据库的简单API。但我很难找到足够的资源来实现这一点。有人能帮我吗?
3 回复
尝试这个:https://github.com/abhayanoop/pgConnect
它使用了 @lutzhorn 提到的 pq 库,并带有配置文件。
更多关于Golang如何连接Postgres数据库的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
我推荐 pq 库。文档可以在 pkg.go.dev 找到。
试试看,它很容易使用!如果你有任何问题,随时回来提问。
在Go中连接PostgreSQL数据库,推荐使用pgx库,它是目前性能最好且功能完整的PostgreSQL驱动。以下是完整的示例代码:
package main
import (
"context"
"fmt"
"log"
"time"
"github.com/jackc/pgx/v5"
"github.com/jackc/pgx/v5/pgxpool"
)
// 使用连接池的示例
func connectWithPool() {
connString := "postgres://username:password@localhost:5432/dbname?sslmode=disable"
config, err := pgxpool.ParseConfig(connString)
if err != nil {
log.Fatal(err)
}
config.MaxConns = 10
config.MinConns = 2
config.MaxConnLifetime = time.Hour
config.MaxConnIdleTime = time.Minute * 30
pool, err := pgxpool.NewWithConfig(context.Background(), config)
if err != nil {
log.Fatal(err)
}
defer pool.Close()
// 测试连接
err = pool.Ping(context.Background())
if err != nil {
log.Fatal(err)
}
fmt.Println("成功连接到PostgreSQL数据库")
}
// 简单连接的示例
func connectSimple() {
connString := "postgres://username:password@localhost:5432/dbname?sslmode=disable"
conn, err := pgx.Connect(context.Background(), connString)
if err != nil {
log.Fatal(err)
}
defer conn.Close(context.Background())
// 执行查询
var version string
err = conn.QueryRow(context.Background(), "SELECT version()").Scan(&version)
if err != nil {
log.Fatal(err)
}
fmt.Printf("PostgreSQL版本: %s\n", version)
}
// 完整的API示例结构
type User struct {
ID int `json:"id"`
Name string `json:"name"`
Email string `json:"email"`
}
func main() {
connectSimple()
connectWithPool()
}
首先安装依赖:
go get github.com/jackc/pgx/v5
连接字符串格式说明:
postgres://- 协议username:password- 数据库凭据localhost:5432- 主机和端口dbname- 数据库名称sslmode=disable- 开发环境禁用SSL
对于API开发,建议使用连接池(pgxpool)以获得更好的性能。连接池会自动管理连接的创建和复用,避免频繁建立连接的开销。

