postgreSQLの insert と update の基本形

PostgreSQLで、新規のデータならinsert, 書き換えならupdate をしようと思ったのですが、なんか面倒くさいので、初期テーブルを沢山作っておくことで対応することしました。

というか、そういうメソッドを準備しておいて欲しい→あるみたいですが、上手く動かせませんでした。

package main

import (
	"database/sql"
	"fmt"
	"log"

	_ "github.com/lib/pq" // ←これを追記
)

func main() {
	// user_log, bike_logへのアクセス
	dbAgent, err := sql.Open("postgres", "user=postgres password=password host=192.168.0.23 port=15432 dbname=agent_db sslmode=disable")
	if err != nil {
		log.Fatal("dbAgent OpenError: ", err)
	}
	defer dbAgent.Close()
	err = dbAgent.Ping()
	if err != nil {
		log.Fatal(err, "\nHint: dbAgent Database may not have started")
	}
	// user_logテーブルの内容の全削除
	dbAgent.Query("delete from bike_log;")

	// insertのテスト
	for i := 0; i < 10; i++ {
		str := fmt.Sprintf("insert into bike_log (stationid, num_bikes) values(%d, -1)", i)
		fmt.Println(str)
		dbAgent.Query(str)
	}

	// updateのテスト
	for i := 0; i < 10; i = i + 2 {
		str := fmt.Sprintf("update bike_log set num_bikes = %d where stationid = %d", i*2, i)
		fmt.Println(str)
		dbAgent.Query(str)
	}
}

出力結果

C:\Users\ebata\yamaguchi\src_try1\others> go run main4.go
insert into bike_log (stationid, num_bikes) values(0, -1)
insert into bike_log (stationid, num_bikes) values(1, -1)
insert into bike_log (stationid, num_bikes) values(2, -1)
insert into bike_log (stationid, num_bikes) values(3, -1)
insert into bike_log (stationid, num_bikes) values(4, -1)
insert into bike_log (stationid, num_bikes) values(5, -1)
insert into bike_log (stationid, num_bikes) values(6, -1)
insert into bike_log (stationid, num_bikes) values(7, -1)
insert into bike_log (stationid, num_bikes) values(8, -1)
insert into bike_log (stationid, num_bikes) values(9, -1)
update bike_log set num_bikes = 0 where stationid = 0
update bike_log set num_bikes = 4 where stationid = 2
update bike_log set num_bikes = 8 where stationid = 4
update bike_log set num_bikes = 12 where stationid = 6
update bike_log set num_bikes = 16 where stationid = 8

データベースの中身

agent_db=# select * from bike_log;
stationid | num_bikes
-----------+-----------
1 | -1
3 | -1
5 | -1
7 | -1
9 | -1
0 | 0
2 | 4
4 | 8
6 | 12
8 | 16
(10 rows)

 

2023,江端さんの技術メモ

Posted by ebata