myfinderの技術や周辺的活動のblog

2009年9月13日日曜日

DBIx::Encodingというモジュールを書いた

YAPCおつかれさまでした。

YAPC中、今まさに課題になっているDB周りの問題を解消すべくDBIx::Encodingというモジュールを書きました。
このDBIx::EncodingはDBIのサブクラスで、executeとfetchの際に指定した文字コードでencode/decodeしてくれるものです。

そもそもDBの文字コード設定がUTF8なら余り悩むこともないのですが、世の中いろいろと事情があってDB側を変更できない事も多いでしょう。
そんなときにこのモジュールを使うと、DBI側で文字コードをencodeしてinsert/updateしてくれ、selectしたときにはutf8 flagを有効にした文字列を返してくれます。

使い方はSYNOPSISにもありますが、下記の通り

my @dsn = (
'dbi:mysql:host=localhost;database=mysql;mysql_socket=/tmp/mysql.sock;',
'root',
'',
{
RootClass => 'DBIx::Encoding',
encoding => 'cp932',
},
);
my $dbh = DBI->connect(@dsn) or die;

アトリビュートに設定を渡すか渡さないかでDBIx::Encodingを利用するかしないか決められるので簡単です。

SEE ALSO
生 DBI ユーザーのための DBI Cookbook (2)

※9/21追記
githubに移しました->こちら

0 件のコメント: