Go 語言系列(十五):PostgreSQL 進階

這是 Go 語言從零到 Web 應用系列的第十五篇。前面我們用 SQLite 作為開發資料庫,現在升級到生產環境常用的 PostgreSQL,學習進階的資料庫功能。 用 Docker Compose 啟動 PostgreSQL 不需要在本地安裝 PostgreSQL,用 Docker 最方便: # docker-compose.yml version: '3.8' services: postgres: image: postgres:16-alpine ports: - "5432:5432" environment: POSTGRES_USER: app POSTGRES_PASSWORD: secret POSTGRES_DB: bookstore volumes: - pgdata:/var/lib/postgresql/data volumes: pgdata: docker compose up -d 連線字串:postgres://app:secret@localhost:5432/bookstore?sslmode=disable pgx Driver pgx 是目前 Go 生態中效能最好的 PostgreSQL driver,比傳統的 lib/pq 快且功能更完整。 安裝: go get github.com/jackc/pgx/v5 go get github.com/jackc/pgx/v5/pgxpool 基本連線 package main import ( "context" "fmt" "log" "github.com/jackc/pgx/v5/pgxpool" ) func main() { ctx := context.Background() // pgxpool 自帶連線池 pool, err := pgxpool.New(ctx, "postgres://app:secret@localhost:5432/bookstore?sslmode=disable") if err != nil { log.Fatal(err) } defer pool.Close() // 測試連線 if err := pool.Ping(ctx); err != nil { log.Fatal(err) } fmt.Println("Connected to PostgreSQL!") } 搭配 database/sql 使用 如果你想保持用 database/sql 的介面(例如搭配 sqlx): ...

2026年2月24日 · 4 min · 692 words · Jack