プログラム
フォルダー構造
$ tree -a
.
├── .env
├── config_mariadb.go
├── go.mod
├── go.sum
└── gorm_update.go
gorm_update.go
// ----------------------------------------------------------------
//
// gorm_update.go
//
// Feb/27/2023
//
// ----------------------------------------------------------------
package main
import (
"fmt"
"os"
"strconv"
"time"
"gorm.io/gorm"
"gorm.io/driver/mysql"
)
// ----------------------------------------------------------------
func main() {
fmt.Fprintln (os.Stderr,"*** 開始 ***")
key_in := os.Args[1]
population_in,_ := strconv.Atoi (os.Args[2])
fmt.Printf ("key_in = %s\t" , key_in)
fmt.Printf ("population_in = %d\n" , population_in)
host,user,password,data_base := config_mariadb_proc()
dsn := user + ":" + password + "@tcp(" + host + ":3306)/" + data_base + "?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic(err)
}
today := get_current_date_proc ()
fmt.Println (today)
db.Exec("UPDATE cities SET population = ?,date_mod = ? WHERE id = ?", population_in,today,key_in)
fmt.Fprintln (os.Stderr,"*** 終了 ***")
}
// ----------------------------------------------------------------
func get_current_date_proc () string {
now := time.Now ()
fmt.Printf ("%s\t" ,now)
fmt.Printf ("%d-%d-%d\n" ,now.Year (),now.Month(),now.Day())
today := strconv.Itoa (now.Year()) + "-" +
fmt.Sprintf ("%d",now.Month()) + "-" +
strconv.Itoa (now.Day())
return today
}
// ----------------------------------------------------------------
.env
config_mariadb.go
はこちら
Go: gorm で MariaDB のバージョンを表示
実行の準備
go mod init update
go mod tidy
実行
go run gorm_update.go config_mariadb.go t3328 892453100
確認したバージョン
$ go version
go version go1.20.1 linux/amd64