GoとMySQLの学習メモ ( DB接続とデータ取得 )
今回勉強するにあたってこの記事を利用しました。
Goでmysqlに接続するために今回は↓のドライバを利用しました。
■ DockerでMySQLを起動してGoからDBを操作する。
mysqlコンテナの作成
version: '3' services: db: image: mysql:5.7 container_name: dev_mysql ports: - "3306:3306" volumes: - ./db/mysql_data:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: password MYSQL_USER: app MYSQL_PASSWORD: password
データベースを作成してデータを入れる。
■ データベース作成 mysql> create database devdb; ■ テーブル作成 mysql> create table users (id int, name varchar(10)); ■ データ追加 mysql> insert into users values (1, 'yamada');
main.go
package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) type Person struct { ID int32 Name string } func main() { db, err := sql.Open("mysql", "root:password@tcp(127.0.0.1:3306)/devdb") if err != nil { panic(err.Error()) } defer db.Close() insert, err := db.Query("INSERT INTO users VALUES ( 2, 'gotest')") if err != nil { panic(err.Error()) } defer insert.Close() results, err := db.Query("SELECT * FROM users") if err != nil { panic(err.Error()) } defer results.Close() for results.Next() { var person Person err := results.Scan(&person.ID, &person.Name) if err != nil { panic(err.Error()) } fmt.Println(person.ID, person.Name) } }
ユーザ情報をSELECTした結果をPersonの構造体にデータを格納しました。 実行した結果は↓
1 yamada 2 gotest