Perl6로 DB에 연결

안녕하세요
Perl 6 Advent Calendar 2015의 10일째입니다.
DBIish에서 DB에 연결하려고합니다.

로컬에 mariadb 설치



Mac에서 homebrew로 mariadb를 설치하십시오.
# インストール
$ brew install mariadb

# 起動
$ mysql.server start

# セキュリティ設定
$ mysql_secure_installation
## root のパスワードを root にしました(セキュリティ設定とは一体)

# データベース作成
$ mysql -uroot -proot -e'create database perl6test'


품목



데이터베이스 이름
perl6test

사용자 이름
루트

비밀번호
루트


이번에는 이것을 사용합니다.

DBIish you a merry Christmas



연결
use v6;
use DBIish;

my
$dbh = DBIish.connect(
  "mysql",
  :database<perl6test>,
  :user<root>,
  :password<root>,
  :RaiseError
  );

테이블 만들기
my
$sth = $dbh.do(q:to/STATEMENT/);
  DROP TABLE IF EXISTS idol ;
STATEMENT

$sth = $dbh.do(q:to/STATEMENT/);
  CREATE TABLE idol (
    id          SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    family_name VARCHAR(12),
    last_name   VARCHAR(12),
    age         TINYINT UNSIGNED
  ) ;
STATEMENT

선불 문


$sth = $dbh.prepare(q:to/STATEMENT/);
    INSERT INTO idol (family_name, last_name, age)
    VALUES ( ?, ?, ? ) ;
STATEMENT

$sth.execute('星宮', 'いちご', 16);
$sth.execute('霧矢', 'あおい', 16);
$sth.execute('紫吹', '',    17);
$sth.execute('大空', 'あかり', 13);

fetchall_arrayref


my
$sth = $dbh.prepare(q:to/STATEMENT/);
    SELECT id, family_name, last_name, age FROM idol ;
STATEMENT

$sth.execute;

my
$arrayref = $sth.fetchall_arrayref();

# 要素数
$arrayref.elems.say; #=> 4

# $arrayref の中身を dump ...
$arrayref.perl.say; #=> $[["1", "星宮", "いちご", "16"], ["2", "霧矢", "あおい", "16"], ["3", "紫吹", "蘭", "17"], ["4", "大空", "あかり", "13"]]

# family_nameとlast_nameだけとりだし
for @( $arrayref ) -> $idol {
  @( $idol ).[1,2].join.say;
}

fetchrow-hash


my
$sth = $dbh.prepare(q:to/STATEMENT/);
    SELECT id, family_name, last_name, age FROM idol ;
STATEMENT

$sth.execute;

loop {
 my $hash = $sth.fetchrow-hash ;
 last unless $hash ;

 # $hash の中身を dump 
 $hash.perl.say;

 # family_nameとlast_nameだけとりだし
 $hash.{'family_name', 'last_name'}.join.say;
}

방법은 그 밖에도 많이.

절단


$sth.finish;
$dbh.disconnect;

(덤) 문서 참조 명령
$ p6doc DBIish

$ p6doc DBDish::Role::ErrorHandling
$ p6doc DBDish::Role::Connection
$ p6doc DBDish::Role::StatementHandle

끝입니다.

참고 및 주석


  • perl6/DBIish
  • perl6/DBIish/examples/mysql.p6
  • perl6/DBIish/lib/DBDish/Role/StatementHandle.pm6
  • Mac에 MySQL을 Homebrew로 설치하는 방법 - Qiita
  • Perl6의 DBIish는 정말로 움직였다 - tokuhirom 's blog
  • Perl6에서 데이터베이스를 처리하고 싶을 때 - Charsbar :: Note
  • 좋은 웹페이지 즐겨찾기