LoginSignup
1
1

More than 3 years have passed since last update.

[Golang]DB操作に便利なパッケージ、「xorm」の動作確認サンプルコード

Last updated at Posted at 2019-09-05

はじめに

今回は、xormというパッケージを使って、簡単にデータベース操作の確認をしてみたので、共有させて頂きます。

いきなり結論のコード

今日のコード
package main

import (
    "fmt"

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

func main() {
    engine, err := xorm.NewEngine("mysql", "root:password@/mydb")
    if err != nil {
        fmt.Println(err)
    }
    defer engine.Close()

    result, err := engine.Query("select * from users limit 1")
    if err != nil {
        fmt.Println(err)
    }

    for k, v := range result[0] {
        fmt.Println(k, string(v)) // => 取得できているか確認
    }
}

解説

xorm.NewEngine()でエンジン作成

engine, err := xorm.NewEngine("mysql", "root:password@/mydb")

xormパッケージに用意されている、NewEngine関数でエンジンを作成します。
ここは、僕の実力ではうまく説明できない部分なのですが、DBに接続する前の準備のようなものかと捉えています。

ここで用意したengine変数を起点に、この後の処理が行われます。
今回は、xormの関数を使っているのがこの部分だけですが、xormパッケージのインポート確認が取れています。

engine.Close()でクローズする

defer engine.Close()

忘れる前に、大事なクローズ。
deferをつけて、最後に実行するようにしてます。

engine.Query()でクエリ作成

result, err := engine.Query("select * from users limit 1")

Query関数は、クエリをそのまま投げられます。今回は、生SQLを突っ込んで、とりあえずの動作確認をしてます。

取得できたデータの型に注意

そのまま出力
fmt.Println(result)
出力結果
[map[birthday:[49 57 55 56 45 48 51 45 49 50 32 48 48 58 48 48 58 48 48] email:[115 104 105 98 97 115 97 107 105 95 97 115 97 104 105 64 101 120 97 109 112 108 101 46 99 111 109] first_name:[230 156 157 233 153 189] gender:[50] id:[49] last_name:[230 159 180 229 146 178] prefecture_id:[49]]]

そのまま出力してみると、バイト型になっている…
取得できているけど、値がわからない。

とりあえずstring型にキャストして取得データの確認

valueのみstring型にキャスト
for k, v := range result[0] {
    fmt.Println(k, string(v))
}
出力結果
gender 2
birthday 1978-03-12 00:00:00
prefecture_id 1
id 1
email shibasaki_asahi@example.com
last_name 柴咲
first_name 朝陽

ちゃんと取れてました!
(もちろん、データは架空のものです。)

さいごに

また、至らない点があれば、コメントなどでご指摘頂ければ嬉しいです。
最後まで、ありがとうございました。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1