タグ

DBICに関するouestのブックマーク (18)

  • DBIx::QueryLog + grc - soh335 memo

    DBIx::QueryLogDBIX_QUERYLOG_EXPLAIN=1 ってやると explain の結果も同時に出力してくれる A stylesheet author's guide to terminal colors を使うと特定の出力に対してカラーリングが出来る。 # filesort regexp=Using\sfilesort colours=red count=more複数作りたい時は ====== で区切る 下記のように実行すると DBIX_QUERYLOG_EXPLAIN=1 plackup -MDBIx::QueryLog 2>&1 grcat path/to/confUsing filesort っていう文字が出た時に赤くなるので、ぱーっと手元で確かめる時に便利かなぁという感触。 手元に気軽に動かすものがなかったので画面は割愛。

    DBIx::QueryLog + grc - soh335 memo
  • DBIx::Class で FORCE INDEX する方法 - Articles Advent Calendar 2011 Dbix

    DBIC って… 最近なにかと dis られることの多い DBIx::Class (DBIC) ですね。 曰く「重い」「複雑すぎる」「コードが読めない」……まあそれはそうかもしれませんが、数年前の DBIC 全盛期に作られて今まで生き残っているシステムを、そう簡単に他の ORM や生 DBI に置き換えられるものでもありません。 自分の管理しているとあるシステムは DBIC + MySQL で動いていますが、最初はデータも多くなく、DBIC が生成する SQL で何ら問題はなかったのです。 が、データが増えて行くにつれて、 MySQL が適切な index を使用してくれないとパフォーマンス的に厳しい、FORCE INDEX 句を付けたい!という状況に出くわしました。そこで試行錯誤して見つけた、FORCE INDEX を指定する方法をご紹介します。 どうやって? たとえば以下のように、fo

    DBIx::Class で FORCE INDEX する方法 - Articles Advent Calendar 2011 Dbix
  • 第3回 DBIx::Classでデータベース操作(2) | gihyo.jp

    Schema::Loaderの利用 第3回(1)でResultクラスには各テーブルがどのようなカラムを持っているかを定義する必要があると書きましたが、「⁠そのようなテーブル情報はデータベースから自動的に取得できるのでは?」と思った方もいるかもしれません。DBIx::Class::Schema::Loaderという別で配布されているモジュールを使用すると、Resultクラスでのテーブル情報の定義を省略できます。 Schema::Loaderを使うべきか 軽いデータベース操作であればSchema::Loaderがお手軽ですが、そうではない場合はResultクラスにテーブル定義をしっかりと書くのがお勧めです。Resultクラスにテーブル定義を書くべき理由は主に2つあります。 ●DBIx::Classからデータベースを作成できる Resultクラスにテーブル定義を書くと、DBIx::Classから

    第3回 DBIx::Classでデータベース操作(2) | gihyo.jp
  • 第3回 DBIx::Classでデータベース操作(3) | gihyo.jp

    Resultクラスの拡張 Resultクラス、ResultSetクラスは自分の好みに合わせて拡張できます。 カラムのinflate/deflate $tweet->created_dateのようなつぶやきの日付を取りたい場合、カラムの値そのままではなくDateTimeオブジェクトを返してくれたらうれしいと思います。その機能を実現するのがカラムのinflate/deflate機能です。inflate(膨らませる)は文字どおりカラムのデータをPerlオブジェクトに変換する機能で、deflate(収縮させる)はPerlオブジェクトをカラムデータへ変換する機能です。 Resultクラス内で __PACKAGE__->inflate_column('column_name', { inflate => sub { # カラムデータからオブジェクトを作って返す }, deflate => sub {

    第3回 DBIx::Classでデータベース操作(3) | gihyo.jp
  • https://blog.afoolishmanifesto.com/posts/dbix-class-vs-class-dbi-vs-rose-db-object-vs-fey-orm/

  • Don't use DBIx::Class::UTF8Columns - JPerl Advent Calendar 2009

    Don't use DBIx::Class::UTF8Columns - JPerl Advent Calendar 2009 Perl に関するちょっとした Tips をのっけてみるよ。ちゃんと続くかな? 自分のつくったもジュールを紹介するハッカートラックということで、僕は DBIx::Class に同封されている DBIx::Class::UTF8Columns について書きます。 まず最初に、このモジュールをつかわないでください。 DBIx::Class::UTF8Columns は DBIx::Class のコアモジュールになってから、utf8 を扱う場合はこのモジュールを使うといいよという記述をいろいろなところで目にします。しかしこのモジュールがしていることを理解せずに使用すると予期せぬ不具合に悩まされるかもしれません。今日はこのモジュールを使わない方が良い理由と、その代替案を示

  • DBIx::Skinnyの発表について - Hatena::Diary::Neko::kak 500 Internal Server Error

    Skinnyの発表資料は http://nekokak.org/presen/yapcasia2009-dbix-skinny/ こちらになります。 ご意見などどしどしおまちしております。 nekokak _at_ gmail _dot_ com で日の発表の補足をば。 Skinnyの発表の時にも言いましたが、 Skinnyの発表前のYappoさんのData::Modelの発表の中で、 「SkinnyはSQLをパーズして云々だからバグバグぽい部分がありそげ。」 とおっしゃってましたが、現在のSkinnyはSQLのパーズをしておりません。 昔はSQL::Parserでパーズするのを試している事があったのですが、 SQL::Parserが複雑なSQLをパーズできないので捨てました。 - Skinnyでは現在install_utf8_columnsというfunctionでutf8flagの処理

    DBIx::Skinnyの発表について - Hatena::Diary::Neko::kak 500 Internal Server Error
  • YAPC::Asia 2009 特別研修 - Moose 入門

    先週末の YAPC::Asia 2009 のカンファレンスに引き続き、特別研修『Moose入門、モダーンなオブジェクト指向システム』に参加してきた。 研修の内容は、Moose とはなんぞやから始まり、以下(だいたい)7 部構成の入門講座。 Moose Concepts : コンセプト ざっと機能一通りみてみる なぜ Moose なのか Classes : Class の基礎から使い方 Moose::Object が何持ってるかとか BUIDLARGS, extends, override, super の使い方 Moose 使ったあとの後始末 (no Moose;) Role : Role の基礎から使いかた Role の持つ意味 使い方 alias で衝突回避 Basic Attributes : Attribute いろいろ required, default/builder, laz

  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • Using DBIx::Class to Version Your Schema

    Intro to DBIx::Class In my opinion DBIx::Class is one of the best ORM solutions out there. Not only can it model your database, including mapping out any foreign key relationships, it can also be used as a canonical point of reference for your schema.   This means we can use it not only as an application layer interface to the database, but can also define a versioned database structure using the

    Using DBIx::Class to Version Your Schema
  • [DBIx::Class] DBICでLEFT JOIN - cyberlib.enterbrainz.com

    [DBIx::Class] from アトリビュートを使用する。 http://search.cpan.org/~ash/DBIx-Class-0.08008/lib/DBIx/Class/ResultSet.pm#from belongs_to を使用してリレーションしていると 普通の join (INNER JOIN) となる。 場合によって、left join を使用しなければならない時、 以下のように from アトリビュートを使用する。 my $it = $schema->resultset('Goods')->search( { 'stock.quantity' => {is => undef}, }, { columns => [qw/goods_id/], from => [ { me => 'goods' }, #ここで

  • DBIx::Class での JOIN - daily dayflower

    DBIx::Class::Manul::Cookbook の "Using joins and prefetch" の前半の抄訳です。仕事上必要になってラフに読んだので参考程度に。 リレーション対象のテーブルの1つ以上のカラムを取得したり,それでソートしたりするには,join アトリビュートを使います。あるアーティスト名にマッチするすべての CD を得るには以下のようにします: my $rs = $schema->resultset('CD')->search( { 'artist.name' => 'Bob Marley' }, { join => [qw/artist/], # join the artist table } ); # 以下の SQL と等価です: # SELECT cd.* FROM cd # JOIN artist ON cd.artist = artist.id

    DBIx::Class での JOIN - daily dayflower
  • DBD::mysqlのmysql_auto_reconnectが真だとDB再接続時にDBICのon_connect_doが実行されない件 - Unknown::Programming

    ハマったメモ。 さてまた今回も若干適当な記事だけども、メモということでお許し願いたい。 ってか誰も言及してないっぽいんだけどもしかしてこの現象うちだけ? とにかくタイトルの通りで、検証時の各モジュールのVERSIONは以下の通り。 DBD::mysql-v4.005 DBIx::Class-v0.08100 前回のDBD::mysqlでSegmentation faultの件は無事解決したものの、今度はDB再接続時に文字化け発動でゲンナリしてました。 でログとか見てるとどうもDBICのon_connect_doで指定しているSET NAMES UTF8がDB再接続時に動いてないことが判明。 myapp_server.plだとちゃんとSET NAMES呼ばれるんだけどmod_perlだと何故か呼ばれない。 ってことでmod_perlに関係有りそうな部分をひたすら調べていたところ、mysql_

    DBD::mysqlのmysql_auto_reconnectが真だとDB再接続時にDBICのon_connect_doが実行されない件 - Unknown::Programming
  • DBIx::Classのちょっとしたメモ - Unknown::Programming

    メモ。 一応MySQLベースです。 デバッグ情報出力 $schema->storage->debug(1); よく忘れますorz。実際に発行されたSQL文が出力されるので便利。 一行だけデータが欲しい my $obj = $resultset->search( { hoge_id => $hoge_id } )->first; # または my $obj = $resultset->single( { hoge_id => $hoge_id } ); ただ上記の方法では実際には検索結果を全て取得してから一行返しているだけなので、キチンとLIMIT設定したければ下記のようになる。 my $obj = $resultset->search( { hoge_id => $hoge_id } )->slice(0,0)->first; テーブルからランダムで一行取得 my $obj = $resu

    DBIx::Classのちょっとしたメモ - Unknown::Programming
    ouest
    ouest 2008/08/20
  • DBIx::Class::Schema::Loaderの手動スキーマ生成、初心者向けチュートリアル - Yet Another Hackadelic

    と言う訳で自分なりに色々調べてみた。 テスト用データベース定義 CREATE TABLE `User` ( `user_id` bigint(20) NOT NULL auto_increment, `name` varchar(255) character set latin1 default NULL, `created_on` datetime default NULL, `updated_on` datetime default NULL, PRIMARY KEY (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `Book` ( `book_id` bigint(20) NOT NULL auto_increment, `name` varchar(255) character set latin1 de

    DBIx::Class::Schema::Loaderの手動スキーマ生成、初心者向けチュートリアル - Yet Another Hackadelic
  • 2007/05/07 - memo - unknownplace.org

    書き忘れたけどさっきの update_schema.pl は ./script/myapp_update_schema.pl dbi:mysql:tablename username password 見たいな感じで DSN を渡す必要がある。めんどう。 ここら辺があれでまだヘルパーにはなってない。 mizzy.org : Re: DBICとDBIx::Class::Schema::Loader 僕のいろいろな勘違い 僕の中で流行ってる使い方があるのでかぶせて書いておいてみる。mizzy さんの二個目の例を自分ルール化させた感じ? 作業は一般的なCatalystアプリのディレクトリ構造上であるとして、そこに新しく schema というディレクトリを作成。 そんで、 schema/lib/Schema/{TableName}.pm に各テーブルのリレーション定義とかメソッドとかを自分で書く。

  • DBIx::Classで手動コミット - Lyo.blog

    研究でDBをいじる機会を得たので、せっかくだからperlのO/RマッパであるDBIx::Classを使ってみることにした。そして例によってハマったのでメモっておく。 各テーブルに対応したクラスをDBIx::Class::Schema::Loaderで自動生成して(マニュアルのワンライナー参照) 一緒に掃き出されたSchemaクラスに以下の一行を追加した。 __PACKAGE__->connection('dbi:Pg:dbname=ga;host=localhost', 'postgres', '', { AutoCommit => 0 }); optionでAutoCommit => 0としたのは複数のテーブルをupdateする際に手動でコミットしたかったから。多分そっちの方がエラーの処理が書きやすいかなと思った。後の地雷を作ることになる。 find等のメソッドが動くことを確認したので次

    ouest
    ouest 2008/03/14
  • Perl/DBIC - Nekokak's core dump

    VERSION-0.05000での記述。http://search.cpan.org/~mstrout/DBIx-Class/ ドキュメントも当初に比べれば増えてきたし、そっち見たほうがよかばい。 まあ以下は簡単なまとめで。一通り使えるくらいは書きたい。 このサイトはWikiなので途中途中に色々追加したり修正したりしますからご注意を DBIx::Class::Schemaを使ってみる これからDBICではSchemaメインらしい。 使うテーブル作成SQL create table user ( id int(10) NOT NULL auto_increment, name varchar(256) NOT NULL, PRIMARY KEY (id) ) ENGINE = InnoDB;

  • 1