2006-03-08(Wed)
Class::DBIのsearchなどで発行されるSQLを確認するTips
Class::DBIを使ってるときに「どんなSQLを発行してるんじゃろ?」と思うことはありませんか? 僕はあります*1。
なんかいい方法がないかなー、と思ってたんですが、Class::DBI::Plugin::Iteratorを使っていれば
my $itr = CD->search( .... ); print $itr->sql, "\n"; print join ',', @{$itr->args}, "\n";
でSQLの中身が確認できることを発見*2。プレースホルダの部分は?になってるけど、その引数も確認できる*3。
どーせならEXPLAINの結果が確認できるとより便利な気もしますな。
Class::DBI::Sweetで集約関数が扱えるようになってた(←わけじゃなかった)
普段はClass::DBIを使ってるわけですが、集約関数は扱えないんですね。
直接SQLを書けばいいんですけど。なんとなくダサくてやだなーと思ってたら、Class::DBI::Sweetで扱えるようになってるじゃないですか。前にドキュメントを読んだ時はそんな記述はなかったのに~。
というわけでやりたいことができるのか調査中なのですが、ハマった部分があったのでメモ。
Class::DBI::Sweetのバージョン0.08だけの問題かもしれないけれど、SQL::Abstractのバージョンが1.20じゃないとテストが通りません*4。
あと0.07からClass::DBIのバージョンが3.0.12以降必須になってるっぽいですが*5、集約関数の対応は0.06からなので、そっちを使ったほうがいいかもと思いつつ(古いバージョンのClass::DBIが入っているサーバがいくつかあるから)テストしてません。
追記
別に集約関数のための機能が増えてるわけじゃなかった。。。。
やっぱ地道にSQL書いていくしかないのね。
さらに追記
んでも、Class::DBI::Sweetを使えば割とよさげに処理できるのは間違いないっぽい。
JOINの処理とかはかなりいい感じになるのですね。
set_sqlにうまくSQLを書けばいいのかもしれない(駄目かもしれないけど)。
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 08 | 09 | 10 | 11 | 12 |
2007 | 02 | 03 | 04 | 05 | 06 | 07 | 10 | 11 | 12 |
2008 | 02 | 03 | 04 | 06 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 02 | 03 | 04 | 05 | 07 | 08 | 10 | 11 | 12 |
2013 | 01 | 05 | 07 |
2014 | 01 | 02 |
2016 | 01 |
2017 | 01 | 05 |
- UNIX ベース アプリケーション用サブシステム
- 特殊映像ラボラトリー第33回 「監督=プロデューサー アニメ会社は 流通革新を起こすか?」
- 中国産アニメ「功夫料理娘」がイロイロと良い感じ
- ASCII.jp:エヴァのガイナックスがYouTubeに来た本当の意味|渡辺由美子の「誰がためにアニメは生まれる」
- Business Media 誠:野島美保の“仮想世界”のビジネスデザイン:増える“ゲームっぽいコンテンツ”――ゲームの再定義競争 (1/3)
- 【レポート】TVアニメ『ゆるゆり』、OPテーマ「ゆりゆららららゆるゆり大事件」のPV撮影現場を直撃! (1) PV撮影現場を少しだけ紹介 | ホビー | マイコミジャーナル
- ASCII.jp:車のCMではなく、本気のアニメを――スバルの挑戦【後編】|渡辺由美子の「誰がためにアニメは生まれる」
- FJ(フィナンシャル ジャパン)オンライン: 『攻殻機動隊S.A.C. SSS 3D』
- 日本教の構造 山本七平の研究 「日本教の社会学」より
- ASCII.jp:車のCMではなく、本気のアニメを――スバルの挑戦【前編】|渡辺由美子の「誰がためにアニメは生まれる」
こういう方法もあります。
見たいSQLに限って長文だったりするので、$itr->sqlはいい感じですね。