2012年09月06日

golangからMySQLを使うには

まえおき

今回はMacにMySQLをインストールして、golangからアクセスしてみます。

MacにMySQLをインストールする方法はググればわかるので、MySQLがインストールされているものとします。

golangからMySQLにかぎらずデータベースにアクセスするライブラリを、 すでに多くの人が作ってくれているので、そのライブラリのどれかを使わせてもらいます。 (go-wikiにいろいろあります。)

ここでは、mymysqlというライブラリを使ってmysqlにアクセスしてみます。

準備

まずは、mymysqlをインストールしましょう。

$ go get github.com/ziutek/mymysql/thrsafe
$ go get github.com/ziutek/mymysql/autorc
$ go get github.com/ziutek/mymysql/godrv

次に、mysqlを起動して

% mysql -u root -p

データベース、ユーザーを作って、パスワードを設定します。

mysql> create database mymysqltest;
Query OK, 1 row affected (0.00 sec)

mysql> grant all privileges on mymysqltest.* to mymysqltestuser@localhost;
Query OK, 0 rows affected (0.00 sec)

mysql> set password for mymysqltestuser@localhost = password("TestPassw9");
Query OK, 0 rows affected (0.00 sec)

サンプルを編集して実行して確認する

次にmymysqlのサンプルを編集して実行してみます。サンプルの場所は

$GOPATH/src/github.com/ziutek/mymysql/examples/simple.go

で、編集箇所は、サンプルからユーザーとデータベース名を変更しているので、

user := "mymysqltestuser"
dbname := "mymysqltest"

のように変更します。あとは、実行すると、

% go run $GOPATH/src/github.com/ziutek/mymysql/examples/simple.go
Connect to tcp:127.0.0.1:3306... OK
Drop A table if exists... OK
Create A table... OK
Insert int A... OK
Select from A...
Row: 0
 name:  ''         <nil>}
 number: 0          {<nil>}
Row: 1
 name:  '1*10= 10' []byte{0x31, 0x2a, 0x31, 0x30, 0x3d, 0x20, 0x31, 0x30}}
 number: 100        {[]byte{0x31, 0x30, 0x30}}
Row: 2
 name:  '2*10= 20' []byte{0x32, 0x2a, 0x31, 0x30, 0x3d, 0x20, 0x32, 0x30}}
 number: 200        {[]byte{0x32, 0x30, 0x30}}
Row: 3
 name:  '3*10= 30' []byte{0x33, 0x2a, 0x31, 0x30, 0x3d, 0x20, 0x33, 0x30}}
 number: 300        {[]byte{0x33, 0x30, 0x30}}
Row: 4
 name:  '4*10= 40' []byte{0x34, 0x2a, 0x31, 0x30, 0x3d, 0x20, 0x34, 0x30}}
 number: 400        {[]byte{0x34, 0x30, 0x30}}
Row: 5
 name:  ''         <nil>}
 number: 0          {<nil>}
Row: 6
 name:  '6*10= 60' []byte{0x36, 0x2a, 0x31, 0x30, 0x3d, 0x20, 0x36, 0x30}}
 number: 600        {[]byte{0x36, 0x30, 0x30}}
Row: 7
 name:  '7*10= 70' []byte{0x37, 0x2a, 0x31, 0x30, 0x3d, 0x20, 0x37, 0x30}}
 number: 700        {[]byte{0x37, 0x30, 0x30}}
Row: 8
 name:  '8*10= 80' []byte{0x38, 0x2a, 0x31, 0x30, 0x3d, 0x20, 0x38, 0x30}}
 number: 800        {[]byte{0x38, 0x30, 0x30}}
Row: 9
 name:  '9*10= 90' []byte{0x39, 0x2a, 0x31, 0x30, 0x3d, 0x20, 0x39, 0x30}}
 number: 900        {[]byte{0x39, 0x30, 0x30}}
Remove A... OK
Close connection... OK

という感じになります。db.Query("drop table A")を実行している箇所をコメントアウトして、 mysql側でselect * from A;とした結果は、

mysql> select * from A;
+----------+--------+
| name     | number |
+----------+--------+
| NULL     |   NULL |
| 1*10= 10 |    100 |
| 2*10= 20 |    200 |
| 3*10= 30 |    300 |
| 4*10= 40 |    400 |
| NULL     |   NULL |
| 6*10= 60 |    600 |
| 7*10= 70 |    700 |
| 8*10= 80 |    800 |
| 9*10= 90 |    900 |
+----------+--------+
10 rows in set (0.00 sec)

となっていたので、golangからmysqlへアクセスしていることが分かったと思います。

posted by やし at 20:54 | Comment(0) | golang | このブログの読者になる | 更新情報をチェックする

     このエントリーをはてなブックマークに追加 このエントリーを含むはてなブックマーク

2012年09月01日

Go言語のソースファイルをVimでシンタックスハイライトするには

設定方法は$GOROOT/misc/vim/readme.txtに書かれている。

  mkdir -p $HOME/.vim/ftdetect
  mkdir -p $HOME/.vim/syntax
  mkdir -p $HOME/.vim/autoload/go
  ln -s $GOROOT/misc/vim/ftdetect/gofiletype.vim $HOME/.vim/ftdetect/
  ln -s $GOROOT/misc/vim/syntax/go.vim $HOME/.vim/syntax
  ln -s $GOROOT/misc/vim/autoload/go/complete.vim $HOME/.vim/autoload/go
  echo "syntax on" >> $HOME/.vimrc

これだけ実行すれば、シンタックスハイライトされる。

これを実行するのはめんどくさいという方のために、上のコマンドをコピーしただけですが、シェルスクリプトファイルを置きました。ダウンロードして、実行権限($chmod +x govim.sh)付けて、$./govim.shと実行してください。

コマンドが分かる人にはわかると思いますが、やってることをちょっと説明すると、ホームディレクトリに.vimディレクトリとかファイル作って、シンボリックリンク貼って、.vimrcファイルを作ってsyntax onと記述してるだけ。(すでに.vimrcファイルがある場合も追記になるので安心。)

タグ:golang
posted by やし at 20:12 | Comment(0) | golang | このブログの読者になる | 更新情報をチェックする

     このエントリーをはてなブックマークに追加 このエントリーを含むはてなブックマーク
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。