2020年2月6日木曜日

Goでもpandasっぽいことできる! DB接続編

https://qiita.com/thimi0412/items/6fb41dd00178753185c9
シェアしました。



はじめに

前回では、GoのDataFrameの基本的な扱い方を紹介しました。
今回はDB接続して、DataFrameに入れてみようと思います。
(SQLでやったらとか言う野暮なツッコミは無しで(^人^)オ・ネ・ガ・イ)

LoadStructsでやってみる

一応ハンズラボのアドベントカレンダーなので、DBから東急ハンズの店舗情報を取得します。
LoadStructsが個人的に一番DataFrameを作りやすいのでやってみました。
main.go

やっていることはこのような流れ
  1. Structで取得してくるカラムを定義する
  2. DB接続して、クエリを実行しデータを取得(Struct)
  3. データをforで回してスライスにStructを詰める
  4. dataframeLoadStructsにスライスを入れて読ませる

面倒な点

  • Structで取得してくるカラムを定義しないといけない
  • Structを変更したらクエリも変更しないといけない

Structを定義せずにDataFrameを作成する

dataframeLoadStructsを使用しましたが、今回はLoadRecordsを使用してDataFrameを作成します。
LoadRecordsの詳細は前回の記事を見てください。
main.go

コードが長くなりましたがやっていることは
1. DB接続して、クエリを実行しデータを取得
2. スライスを作成
3. カラムを取得してスライスに入れる(こいつがヘッダ)
4. 選択したカラムの値を入れたスライスを2.で作成したスライスに入れる
5. LoadRecordsに読ませる

手が届かないところ

LoadRecordsは型を指定してDataFrameで読み込めないので、例えばid001だった場合LoadRecordsで読み込むと上の出力結果のようにid1になってしまいます。 
型をしっかりとしてしたい場合はLoadStructをしようした方がいいでしょう。
ハンズラボ Advent Calendar 2018 明日8日目は@naokiurです! 

ユーザー登録して、Qiitaをもっと便利に使ってみませんか。

0 コメント:

コメントを投稿