/ / WinChalow

Class::DBI::Plugin::Iterator[perl]

2004-12-29

これを使うと、データベースから取得したデータをページングするときに、効率が良くなるらしい。Windows ではテストが全部通った直後に落ちるという妙な挙動をするが、これはperl CORE のテスト・モジュールの方のバグなので気にしない。
http://asakura.g.hatena.ne.jp/asakura-t/20041219

さてページングはできるようになったが、今度はページングしたデータをHTMLにするのがめんどくさいなあ、と思ったらHTMLを書いてくれるモジュールがあった。
http://search.cpan.org/~aaronjj/Class-DBI-Plugin-HTML-0.8/HTML.pm

これをWindowsで使うにはprerequisitesが山のようにあってたいへんだ。

ppm.bat を起動してHTML-TableとHTML-FillInFormをインストールする。

次のモジュールはppmがない。CPANから根気よくダウンロードしてインストールする。

SQL-Abstract-1.17.tar.gz
Class-DBI-AsForm-2.41.tar.gz
Class-DBI-Plugin-0.03.tar.gz
Class-DBI-Plugin-Type-0.02.tar.gz
Class-DBI-Plugin-RetrieveAll-1.01.tar.gz
Class-DBI-Plugin-AbstractCount-0.03.tar.gz
Class-DBI-AbstractSearch-0.05.tar.gz

これで準備完了だが、この先はもっとたいへんそうだ。試しに作った Class::DBI::Plugin::Html を使ったスクリプトが動かない。as_Htmlメソッドが継承されていない。本当にこんなんで楽になるのか...年末なのに苦戦中。

ちなみに AbstractSearch はPlugin::Iterator を組み合わせると使いでがありそうでうれしい。次のようなSQLを発行して結果を表示することを、perl の構文だけで書けるようになる。SQL発行前後のうだうだした処理を書かなくて済むので、プログラムの見通しが非常に良くなる。
データベースに接続してデータベース・ハンドラーを生成
SQL文をprepare

SELECT Title FROM mov1 WHERE Title LIKE 'F%' LIMIT 0,2;

SQL実行
結果表示
map { print $_->Title, "\n" } 
Film->search_where(Title => [ { like => 'F%' } ])
	->slice(0,2) ;

こうなったら、RDBMSがいきなりHTML吐いちゃうっていうのはないものだろうか。
(2004-12-29 14:46:48)

permlink