Data::ObjectDriverでDBI->connectの\%attrを渡そう
透過キャッシュだのレプリケーションだの色々ドライバを書けるが、普通に使う分にはSYNOPSISの通りでいい。
で、DBI->connectで使う%attr、例えば mysql_enable_utf8 を渡すのはどーすんのかなと思ってソース見たら
use parent qw/Data::ObjectDriver::Driver::DBI/; sub driver { my $class = shift; $class->new( dsn => 'dbi:mysql:dbname', username => 'username', password => 'password', connect_options => +{ RaiseError => 1, PrintError => 1, AutoCommit => 1, mysql_enable_utf8 => 1, on_connect_do => [ "SET CHARACTER SET 'utf8'" ], }, ); }
と普通に使えますねーな話。
あと RaiseError, PrintError, AutoCommit はそれぞれ 1, 0, 1 が初期値であるんだけど、書いておいた方が明示的だよねーと。
D::ODは評判よくなかったりするけど個人的には割と好きです。つうか他が色々無い。
とはいえgroup byとかしたい場合は Data::ObjectDriver::SQL 使うよりもDBIのハンドラ取って直にsql書く上にそういうことをしたいときがよくある。