2007年4月24日火曜日

YAPC::Asiaメモ(その1)Introduction to DBIx::Class

データベースのプログラミングには苦手意識がある。理由のひとつは$dbh->prepare()だとかfetch()とか、おまじないが多すぎるからで。それを解消してくれるかもしれないモジュール。
  • ORM(Object-relational mapper):オブジェクトからリレーショナルデータベースへのマッパ。最近話題らしい。
  • SQLを書かずにPerlを書こう。
  • MySQLをはじめいろいろなDBに対応。
  • 気に入った書き方をスライドからコピペ。
my $table = $schema->resultset('table');
$table->find(1); # primary key

my $people = $schema->resultset('Person')->
search({ firstname => { like => 'Jon%' } });
悪くない。でも使いたいかと言われれば微妙。クラススキーマをいちいち定義しなければいけなかったり(自動化できるみたいだけど)、結局$table->findにしても新たなおまじないを覚えなくてはいけないし。

個人的にはこういうインターフェイスが理想なんだけど。
@rows = $dbh->select(
from=>"people",
where=>"name =~ /^Joh?n.*Kennedy/i"
);
for my $row (@rows) {
say $row->{name};
say $row->{address};
}
ポイントはPerlの正規表現を使ったSELECTと、列の名前であるnameを$row->{name}として使えるようにすることなんですが、こういうことをやってくれるモジュールはありませんでしょうか。

0 件のコメント:

コメントを投稿