【実務向け】Go DB接続の方法|MySQL・PostgreSQL対応の開発入門

プログラム

Go言語でWeb開発やAPI開発を行う際、必須になるのが「データベース接続」です。
特に MySQL や PostgreSQL は、実務で広く利用されています。

本記事では、GoでMySQL・PostgreSQLへ接続する方法を「基本〜実務レベル」まで解説します。


GoでDB接続する流れ

基本の流れ👇

  1. ドライバ導入
  2. DB接続
  3. SQL実行
  4. 結果取得
  5. Close処理

MySQL接続方法

ドライバ導入

go get github.com/go-sql-driver/mysql

接続コード

import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)

db, err := sql.Open(
"mysql",
"user:password@tcp(localhost:3306)/sample",
)

PostgreSQL接続方法

ドライバ導入

go get github.com/lib/pq

接続コード

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

db, err := sql.Open(
"postgres",
"host=localhost port=5432 user=postgres password=pass dbname=sample sslmode=disable",
)

接続確認(Ping)

err = db.Ping()

if err != nil {
panic(err)
}

👉 実務では必須


SELECT実行

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

INSERT実行

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

実務で重要なポイント

✔ defer Close

defer db.Close()

✔ コネクションプール

db.SetMaxOpenConns(10)

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

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

ORM(GORM)との違い

GORM

項目SQLORM
学習コスト
柔軟性
実務性能

実務での応用

  • API開発
  • 管理画面
  • ECサイト
  • SaaS開発


よくある失敗

❌ Close忘れ
❌ SQL直書き乱立
❌ トランザクション未対応


ベストプラクティス

  • Ping確認
  • Prepare利用
  • コネクション管理
  • ORM併用検討

💡 結論

👉
「DB設計と接続品質がシステム品質を決める」

コメント

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