MDB2_Result_Common オブジェクトには、結果セットの行からデータを取得するための 4 つのメソッドがあります。 fetchOne()、 fetchRow()、 fetchCol() そして fetchAll() です。 fetchRow() および fetchOne() は、それぞれ行全体あるいは特定のカラムのフィールドを取得します。 結果ポインタは、これらのメソッドがコールされるたびに次の行に移動します。 結果セットの最後に達した場合は NULL が返されます。 fetchAll() および fetchCol() は、結果セットのすべての行を読み込んで結果ポインタを最後まで移動します。 fetchAll() は行全体のデータを読み込みますが、 fetchCol() は特定のカラムのみを読み込みます。 エラーが発生した場合は MDB2_Error が返されます。 <?php
CakePHP1.2 RC2 で Schema を試してみました。 基本的な操作は cake コマンドで行います。 PHP でテーブル構造を配列で定義しておいてテーブルを作成することもできますし、現在あるテーブルからテーブル構造を PHP に出力することもできます。 ヘルプの表示 $ cake schema help スキーマの作成 $ cake schema generate schema.php というファイルが app/config/sql に作成される schema.php が存在する場合は上書きするかどうか聞かれる Welcome to CakePHP v1.2.0.7296 RC2 Console --------------------------------------------------------------- App : app Path: /home/cakep
Data::Model っていう ORM みたいの CPAN にあげたよ あざーす。循環参照しすぎるとバターになる。。なんでそんなに人の目を気にするのだろうと、マジレス。 早速ですが Data::Model っていう O/Rマッパー 的な物を CPAN にあげました。 Data::Model http://github.com/yappo/p5-Data-Model/tree/master 元来は MVC モデルで言う所の Model を一括でまかなえるつもりで実装していますが、ロジック処理は普通の Perl のクラスで書いちゃった方が潰しが聞くため、主にストレージを Perl のオブジェクトにマッピングする ORM 的な使い方が主流となっています。 そして、 Data::Model の多くの実装や設計などは Data::ObjectDriver を参考にして開発しました。 他にも後述して
DBD::Mock は DBI のドライバの一つで、DBI を使ったプログラムで意図的な状態を作る事が出来ます。 と言う訳でメモ程度に書いて行きます。 データベースハンドルの取得 use strict; use warnings; use Test::More; use DBI; plan tests => 3; my $dbh = DBI->connect('dbi:Mock:', '', '', +{ AutoCommit => 0, RaiseError => 1 }); ok($dbh, 'Create database handle'); isa_ok($dbh, 'DBI:db'); is($dbh->{Driver}->{Name}, 'Mock', 'Driver information'); で、普通に Database Handle が取れます。 SELECT してる箇
ついに発売されたスト4のコンシューマ機版をやりたくてしょうがないけど筐体を買ってもらえないので、駅前のゲーム屋のディスプレー前で垂涎するばかりのmikioです。今回は連載の最終回で、各種スクリプト言語を使ってお手軽にテーブルデータベースを操作する方法について説明します。 TokyoCabinet::TDB まずは、TCのPerlバインディングとRubyバインディングの最新版を入手してください。それぞれテーブルデータベースを扱うための TokyoCabinet::TDB というクラスが加わっています。以下のようなIDLによるガイドラインに準拠したインターフェイスが提供されますので、使い方は言語にかかわらず同じようになるはずです。 module TokyoCabinet { interface TDB { boolean open(in string path, in long omode);
CouchDB は面白いのですが、Erlang で書かれた daemon を動かす必要があるので、環境によっては使いにくい。 ということで、Perl + DBI のみで似たような動作をするものを作ってみました。daemon じゃなくて、Perl から直接 DB を扱うライブラリです。 Coderepos に置きました。http://svn.coderepos.org/share/lang/perl/DBIx-CouchLike/trunk できることは単純。 (key => 任意の構造の hash ref) の CRUD CouchDB ぽい map / reduce 対応している DBD はとりあえず SQLite と PostgreSQL で。 CRUD use DBIx::CouchLike; use DBI; $dbh = DBI->connect("dbi:SQLite:dbna
短期間でCPANに上がってる名が通ったO/Rマッパ+αを目を通して、ORMマッパの必要最低限なコンポーネントを整理した。ぶっちゃけもっと削っても良いが一般的にするためにもリストアップ。 ORM 基幹的なクラスで使い方はORMによりけりで、特に無くても良い。 ORM::Schema テーブル定義を行う場所。物によってはデータベースの定義だけ行って。テーブルの定義はORM::Table的な物で行う。 どっちにしろテーブルの定義には変わらない。 大ざっぱに言うと、このクラスからselect系のメソッドが生えている。 ORM::Iterator 結果の行を取り扱うイテレータ。 DBICならDBIx::Class::CursorになりMoCoならDBIx::MoCo::Listが担当。 ORM::Row 結果の行ごとのオブジェクト。だいたいはORM::Schema or Table で定義してるco
いまさっきcodereposにDBix::Skinnyというものをimportしました。 http://coderepos.org/share/browser/lang/perl/DBIx-Skinny 昨今のDBICブームで利用者は増えてきたんですが、いろいろ使うにあたって、 ここまでORマッパーでいろいろ(JOINしたり、キャッシュしたり)やるのはどうなんだとか、 うんたらかんたら考えたら自分で作ってしまえてのが動機でした。 DBICははっきり言ってどでかいライブラリなので一からソースを読むのがかなり大変です。 仕事で使ってる関係上、仕方なく見ることもありますが、キツい。 あと、DBICを使っているとJOINしたSQLがある意味簡単に発行できるので 重宝するのですが、ぶっちゃけどういうSQLが発行されているか全部ちゃんと見てる人って どれくらいいるのだろうと思ったり。 DBICによって
メモ。 一応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 - SELECT … FOR UPDATEその後」でできるようになったらしいけど、マニュアルに何にも書いてない。SQL::Abstractにも使えるとは書いてない。どーなったんじゃー、とソースを追っかけて、DBIC::SQL::Abstractを探してはまった。DBIx::Class::Storage::DBIの中でDBIC::SQL::Abstractが宣言されてた。よくpatchを読みなさい、ということ。で、結局使えるらしい。 $rs = $schema->resultset('Table')->search( { id => $id }, { for => 'update', } ); DBI_TRACE=1してSQLクエリを覗いたら、ちゃんとFOR UPDATEになってた。便利便利。
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
[Haskell] ANNOUNCE: Galois web libraries for Haskell released Don Stewart dons at galois.com Mon Apr 21 14:11:19 EDT 2008 Previous message: [Haskell] Re: DRAFT: Haskell' status update Next message: [Haskell] Re: [Haskell-cafe] ANNOUNCE: Galois web libraries for Haskell released Messages sorted by: [ date ] [ thread ] [ subject ] [ author ] Galois, Inc. is pleased to announce the open source releas
Perl の言語組み込みのリスト操作は関数形式で、push(@array, 1, 2) のような記述になります。一つのリストに対して複数の操作をしたい場合などは、関数呼び出しを複数行にわたって書いていくことになり、少々面倒です。しかし Perl は、Perl のリスト実装である配列のリファレンスに bless してメソッドを定義したクラスを作ることができます。この独自に定義したクラスにプリミティブな操作を加えていって、Ruby のように連続したメソッドの呼び出しによるリスト操作を実現することが可能です。 ここでは List::RubyLike という配列クラスを作成します。まずは手始めに配列に bless して、size() メソッドが呼び出せるようにします。以下のようになります。 package List::RubyLike; use strict; use warnings; sub
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く