Go言語とSQLiteでランダムの顧客10人の注文をランダムの金額1000~10000の範囲で10000件登録してみる。
まず下記のコードを記載する。
package main
import (
"database/sql"
"fmt"
"log"
"math/rand"
"strconv"
"time"
_ "github.com/mattn/go-sqlite3"(//自動入力されないので、手打ちで入力する)
)
func main() {
db, err := sql.Open("sqlite3", "sample.db")
if err != nil {
log.Fatal(err)
}
a := `CREATE TABLE orders(
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER,
price INTEGER
);`
_, err := db.Exec(a)
if err != nil {
//log.Fatal(err)
}
var t string
var k string
for i := 0; i < 10000; i++ {
rand.Seed(time.Now().UnixNano())
user_id := rand.Intn(9) + 1
t = strconv.Itoa(user_id)
price := rand.Intn(9000) + 1000
k = strconv.Itoa(price)
s := "INSERT INTO orders(user_id, price) VALUES('" + t + "','" + k + "')"
_, err = db.Exec(s)
if err != nil {
log.Fatal(err)
}
}
}
CREATE TABLE ordersでid,user_id,priceが入ったtableを作成する。
次にランダムのuser_idと金額を作成する。ランダムは、rand.Seed(time.Now().UnixNano())とrand.Intn()の組み合わせで用いる。rand.Intn()の中の()には、ランダムにしたい数字を入れる。今回のuser_idは1~10まで表示したいので、引数を9として、0~9のuser_idがランダムに表示されるようにし、+1をすることで、1~10のuser_idが表示されることになる。
strconv.Itoa()は、数字を文字列に変換する。
"INSERT INTO ordersでuser_idとpriceの値をtableに挿入する。この時、tとkを変数としての文字列と認識させるために、" + t + "、" + k + "とする。
res, err = db.Exec(s)で、ランダムの変数t,kを挿入するsを実行する。今回は、10000件登録するので、ランダムに変数を作成して挿入するまでをforの繰り返しでう。
この時、変数tとkをforの外で囲わないとエラーが発生する。




