GoでMySQL接続をしてみる

DB接続用の標準パッケージを取得しておく

$ go get "github.com/go-sql-driver/mysql"

MySQLでサンプルDBを用意しておく

> create database book_sample;
> use book_sample;
>
> create table if not exists books (
>   id int auto_increment,
>   title varchar(255) not null,
>   primary key (id)
> );

データを適当に入れる

mysql> select * from books;
+----+-------------------+
| id | title             |
+----+-------------------+
|  1 | Lord of the Rings |
|  2 | The Two Towers    |
+----+-------------------+

$GOPATH/src/ 以下にプロジェクトディレクトリを作成してmain.goを配置

~/g/s/book ❯❯❯ tree .
.
└── main.go

main.go

package main

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

    _ "github.com/go-sql-driver/mysql"
)

// Book table
type Book struct {
    ID    int
    Title string
}

func main() {
    db, err := sql.Open("mysql", "root:root@/book_sample")
    log.Println("Connected...")

    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    rows, err := db.Query("select * from books")
    defer rows.Close()
    if err != nil {
        panic(err.Error())
    }

    for rows.Next() {
        var book Book
        err := rows.Scan(&book.ID, &book.Title)

        if err != nil {
            panic(err.Error())
        }
        fmt.Println(book.ID, book.Title)
    }
}
$ go run main.go

f:id:hawaiiantime:20190222172640p:plain

参考

qiita.com