🐙

GoからDB接続する(GORM+PostgreSQL16.4)

2024/09/22に公開

DB接続を入れる。実施したいことは2つで、モデルを作りそれを元にテーブル構成を自動生成すること、ORMを導入することです。

GORMならどちらも対応していますが、ORMはsqlcが話題になっているのでそちらを使います。sqlcにはマイグレーションする機能がないので、そこだけGORMを使います。

今の会社がMSAzureを重用しているのでAzureのマネージドDBを使って検証します。
まずはDB接続部分から。

server.go
package main
import (
	"exit/model"
	"fmt"
	"github.com/labstack/echo/v4"
	"gorm.io/driver/postgres"
	"gorm.io/gorm"
)
func main() {
	e := echo.New()
	Route(e)
	dbURL := "postgres://user:password@hostname:port/dbname"
	db, err := gorm.Open(postgres.Open(dbURL), &gorm.Config{})
	if err != nil {
		panic("failed to connect database")
	}
	db.AutoMigrate(&model.Product{})
	fmt.Println("migrated")
}

モデル

product.go
package model
import (
	"database/sql"
	"time"
	"gorm.io/gorm"
)
type Product struct {
	gorm.Model
	Code  string
	Price uint
}

起動後、モデルに定義した構成でテーブルが作成されました。次はsqlcによるORMを使っていきます。
GORMの公式DOCのサンプルでは接続失敗しましたが試行錯誤して接続しました。
https://gorm.io/docs/connecting_to_the_database.html

Discussion