- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- Perl-DBIC/環境設定/全体の流れ へ行く。
- 1 (2007-03-29 (木) 11:59:13)
- 2 (2009-05-02 (土) 04:57:02)
- 3 (2009-09-06 (日) 05:10:59)
構成例
データベーススキーマ
- テーブル t1
- num int (PK)
- テーブル t2
- num int (PK)
- str text
シェルから実行
cat > test.sql create table t1 ( num int primary key ); create table t2 ( num int primary key, str text ); insert into t1 values ( 1 ); insert into t1 values ( 100 ); insert into t1 values ( 20 ); insert into t2 values ( 10, 'abc' ); insert into t2 values ( 1, 'xyz' ); (CTRL+D) sqlite3 test.db < test.sql
ファイル構成
|-- lib | |-- DB | | |-- T1.pm | | `-- T2.pm | `-- DB.pm |-- main.pl `-- test.db
- DB.pm スキーマクラス
- T1.pm テーブルクラス
- T2.pm テーブルクラス
ファイル詳細
main.pl
#!/usr/local/bin/perl use strict; use warnings; use lib 'lib'; use DB; my $schema = DB->connect('dbi:SQLite:dbname=test.db', '', ''); my $rs = $schema->resultset('T2'); my @rows = $rs->all; foreach my $r (@rows) { print $r->num," : ",$r->str,"\n"; }
lib/DB.pm
package DB; use strict; use warnings; use base qw/DBIx::Class::Schema/; __PACKAGE__->load_classes(qw/T1 T2/); 1;
lib/DB/T1.pm
package DB::T1; use strict; use warnings; use base qw/DBIx::Class/; __PACKAGE__->load_components(qw/PK::Auto Core/); __PACKAGE__->table('t1'); __PACKAGE__->add_columns(qw/ num /); __PACKAGE__->set_primary_key('num'); 1;
lib/DB/T2.pm
package DB::T2; use strict; use warnings; use base qw/DBIx::Class/; __PACKAGE__->load_components(qw/PK::Auto Core/); __PACKAGE__->table('t2'); __PACKAGE__->add_columns(qw/ num str /); __PACKAGE__->set_primary_key('num'); 1;
注意
スキーマクラスで、load_classes()ではなく、load_namespaces()を使う場合、DBディレクトリ内にResultディレクトリを作成し、その中にT1.pmとT2.pmを置く。現在はResultディレクトリを使う構成の方が推奨されているようだ。