GoでのMsql接続

GoにはDB接続のための標準パッケージが用意されています。
https://golang.org/pkg/database/sql/

加えて、mysqlのドライバが用意されているので、それをgo getしておきます。

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

Mysql接続からデータを引っ張ってくるまで

今回は、ローカルにあらかじめ用意しておいた、IDと名前があるだけの簡単なuserデータベースにアクセスしてみます。

スクリーンショット 2018-12-08 20.52.24.png
package main

import (
    "database/sql" //ここでパッケージをimport
    "fmt"
    "log"

    _ "github.com/go-sql-driver/mysql" //コード内で直接参照するわけではないが、依存関係のあるパッケージには最初にアンダースコア_をつける

)

//引っ張ってきたデータを割り当てるための構造体を用意
type Person struct {
    ID   int
    Name string
}

func main() {

    //mysqlへ接続。ドライバ名(mysql)と、ユーザー名・データソース(ここではgosample)を指定。
    db, err := sql.Open("mysql", "root@/gosample")
    log.Println("Connected to mysql.")

    //接続でエラーが発生した場合の処理
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    //データベースへクエリを送信。引っ張ってきたデータがrowsに入る。
    rows, err := db.Query("SELECT * FROM users")
    defer rows.Close()
    if err != nil {
        panic(err.Error())
    }

    //レコード一件一件をあらかじめ用意しておいた構造体に当てはめていく。
    for rows.Next() {
        var person Person //構造体Person型の変数personを定義
        err := rows.Scan(&person.ID, &person.Name)

        if err != nil {
            panic(err.Error())
        }
        fmt.Println(person.ID, person.Name) //結果 1 yamada 2 suzuki

    }
}

参考

Golang MySQL Tutorial
https://tutorialedge.net/golang/golang-mysql-tutorial/

广告
将在 10 秒后关闭
bannerAds