【初心者向け】Go PostgreSQL接続の手順|database/sqlで始めるDB開発入門

プログラム

Go と PostgreSQL を組み合わせることで、高性能なAPIやWebサービスを構築できます。
特にPostgreSQLは、堅牢性・拡張性が高く、実務で人気の高いデータベースです。

本記事では、GoでPostgreSQLへ接続する手順を「導入・SQL実行・実務ポイント」まで初心者向けに解説します。


GoでPostgreSQL接続する流れ

基本の流れ👇

  1. ドライバ導入
  2. DB接続
  3. Ping確認
  4. SQL実行
  5. Close処理

PostgreSQLドライバを導入

go get github.com/lib/pq

基本の接続コード

package main

import (
"database/sql"
"log"

_ "github.com/lib/pq"
)

func main() {

connStr := `
host=localhost
port=5432
user=postgres
password=pass
dbname=sample
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)
}

log.Println("接続成功")
}

SELECT実行

rows, err := db.Query(
"SELECT id, name FROM users",
)

INSERT実行

_, err := db.Exec(
"INSERT INTO users(name) VALUES($1)",
"Tomoya",
)

👉 PostgreSQLは $1 を使う


UPDATE実行

_, err := db.Exec(
"UPDATE users SET name=$1 WHERE id=$2",
"Taro",
1,
)

DELETE実行

_, err := db.Exec(
"DELETE FROM users WHERE id=$1",
1,
)

実務で重要なポイント

✔ defer Close

defer db.Close()

✔ コネクションプール

db.SetMaxOpenConns(10)

✔ SQLインジェクション対策

db.Query(
"SELECT * FROM users WHERE id=$1",
id,
)

MySQLとの違い

MySQL

項目MySQLPostgreSQL
特徴シンプル高機能
JSON対応
拡張性
実務用途Web系大規模開発

ORM(GORM)との連携

GORM

gorm.Open(postgres.Open(dsn), &gorm.Config{})

実務での応用

  • REST API
  • SaaS開発
  • 管理画面
  • 大規模システム


よくある失敗

❌ sslmode忘れ
❌ Ping未確認
❌ Close忘れ


ベストプラクティス

  • Ping確認
  • Prepare利用
  • Pool管理
  • ORMとの併用

💡 結論

👉
「Go×PostgreSQLは拡張性の高いAPI開発に最適」

コメント

タイトルとURLをコピーしました