読者です 読者をやめる 読者になる 読者になる

mysqlar ActiveRecordを使った対話型のMySQLクライアント

通常mysqlのデータをコンソールで調べたい場合はmysqlコマンドを使って調べます。しかしActiveRecord依存症な人(含む自分)な人は簡単なSQLをど忘れしたり、ああRubyのあのメソッドつかえば簡単に計算ができるのに、とか思ったり思わなかったり。
またちょっと値を弄って、計算してinsertやupdateを行うときなんかもmysqlコマンドからSQL発行する形だとやりにくかったりします。
そのため今までは簡単なActiveRecordを使ったスクリプトを書いたんですが、実際はコネクションの設定がほとんどで、プログラムのコアはほんの1〜数行だったりします。
そこでどうせならirb使って対話型にmysqlを使えるようにするクライアントを書いてみました。

mysqlar -unobody -ppassword -t wiki

など、mysqlコマンドのように立ち上げることができます。ちなみに -t は pluralize するかどうかです。pluralizeしないほうが便利なテーブルは -t をつけずに立ち上げます。詳しいオプションは mysqlar --help で。
使い方は

# usersテーブルのidが1のname
>> User.find(1).name
=> "Anonymous Coward"
# tagsテーブルのnameがrubyの行データ
>> Tag.find_by_name 'ruby'
=> #"ruby", "id"=>"28"}>
# nameがfootagなデータを作成
>> Tag.create :name => 'footag'
=> #>, @attributes={"name"=>"footag", "id"=>68}, @new_record=false>
# さっき作ったtagsの行データ
>> Tag.find 68
=> #"footag", "id"=>"68"}>
# usersテーブルのupdate_time(最後のログイン時間)が最近一ヶ月のカウント
>> User.count(['update_time > ?', Time.now.last_month])
=> 19

な感じで。特にTimestamp周りの処理でRubyのTime型を使えるのが嬉しいですね。

mysqlarのソースhttp://rails2u.com/misc/mysqlar.txt に。pathの通ったディレクトリに入れれば使えるでしょう。動作環境はrubygemsrails 1.0が入ってれば多分動きます。


# 関係ないけど最近仕事でも perl 書いてないヤバス! ruby でできちゃうことはなんでも ruby でやっちゃってなかなか覚えられない罠・・・。