MiniDBIでmysqlを使ってみよう

tag

perl6でデータベース操作を行う方法は、現在のところMiniDBIというモジュールを使うのが良さそうなので、その使い方を紹介します。MiniDBIはrakudo-star-2010-11に同梱されていましたので、追加のインストールは不要です。

使い方はこんな感じです。

#!/usr/bin/env perl6
use v6;
use MiniDBI;

my $dbh = MiniDBI.connect(
    'MiniDBI:mysql:database=hoge;host=127.0.0.1',
    'root',
    '',
    :RaseError
);
$dbh.do('set names utf8');

{
    my $sth = $dbh.prepare('select * from hoge where id = ?');
    $sth.execute(42);
    while $sth->fetchrow_hashref() -> $row {
        my $body = Buf.new($row<body>.comb>>.ord).decode;
        $body.say;
    }
}
{
    my $sth = $dbh.prepare('insert into hoge values (?,?)');
    $sth.execute(50, 'ほげほげ');
}

まずまず普通に動いているようです。注意しないといけないのは、

くらいでしょうか。実際にはこれをベースに自分で安全な実装を書く方が良いと思います。NativeCallを使ってlibmysqlclientをたたいているので、そこらへんの使い方は参考になるでしょう。