Perl::DBI
1 :nobodyさん :02/03/12 23:35 ID:xHkBB9i/.net DBIでも語ろうぜ DBI.org http://DBI.perl.org DBI-ML-J http://member.nifty.ne.jp/hippo2000/dbi/dbi_japan.htm DBI.pm 日本語訳 http://member.nifty.ne.jp/hippo2000/perltips/dbimemo.htm
275 :nobodyさん :2006/08/29(火) 00:25:18 ID:???.net リレーションの設定はモデルでやれってば。 コントローラでやる理由は?
276 :nobodyさん :2006/08/29(火) 01:34:48 ID:???.net >>275 レスありがとうございます。 コントローラに記述する理由ですが、今後テーブルの個数が大きく増減する可能性があり、 モデルを全削除して、再度CatalystのヘルパースクリプトでDBの構造から モデルファイルを自動作成するかもしれないからです。 ヘルパースクリプトを使わず、変更の度に対応するCatalystのモデルファイルを 手動で追加・削除したりしても良いのですが、どうしてもミスがありますので・・・ こちらは希望ですので、モデルに書くしか実現できないようでしたら諦めたいと思います。 ただ、モデルに書いた場合でも片方のテーブルが主キー以外のカラムと連結できず、 ハマり状態から抜けられずにいます。 モデルにリレーションを書く方法も平行して試行錯誤してみます。
277 :nobodyさん :2006/08/29(火) 02:11:16 ID:???.net ?BRZ(1020) あっちにも書いたし、もしかしたら引用ミスかもしれないけど こうじゃなくて my $records = $table->search( {belong_dno => $dno}, {order_by => 'order_no'}, {prefetch => ['illust_bind']} ); こうじゃないのかな my $records = $table->search( { belong_dno => $dno }, { order_by => 'order_no', prefetch => [ 'illust_bind' ] } ); 2chは半角スペースが詰められちゃうから 書き込むときは全角でインデントするといいよ
278 :nobodyさん :2006/08/29(火) 04:13:08 ID:???.net >>276 それなら DBIC::Schema 使えばいいんじゃないかな。
279 :nobodyさん :2006/08/29(火) 09:36:54 ID:???.net >>276 package MySchemaClass; use base qw/DBIx::Class/; # 自動生成 package MyController; use MySchemaClass; MySchemaClass->belongs_to(...);
280 :nobodyさん :2006/08/29(火) 15:58:11 ID:???.net >>277 >>278 >>279 レスを頂きましてありがとうございます。 >>277 ご教授ありがとうございました。 prefetchはorder_byと同じ第2引数に記述するのですね。 今まで第3引数として書いても動作していたのは、 DBICの方で良きに計らってくれたのかもしれません・・・ ただちに直させて頂きました。 インデントの件も御指摘ありがとうございます。 以後気をつけて書き込みさせて頂きます。
281 :nobodyさん :2006/08/29(火) 15:59:24 ID:???.net >>278 >>279 なるほど、DBIC::Schemaを使用すれば、問題とならないのですね。 Catalystを使う上でもDBIC::Schemaが推奨させているようですので、 私もこちらを非常に使いたいのですが、未熟なため、 DBIC::Schemaを使用してCatalystのヘルパースクリプトを立ち上げられずにいます。 こちらのサイトを参考にして試してみたのですが http://en.yummy.stripper.jp/?eid=362958 >script\lc_create.pl model DBIC DBIC::Schema Lc::Schema create=static DBI:Pg:mydb user pass とプロンプトからヘルパースクリプトを起動させると >Can't locate object method "use" via package "DBIx::Class::Schema::Loader" (perhaps you forgot to load "D BIx::Class::Schema::Loader"?) 『もしかしてDBIx::Class::Schema::Loaderをロードし忘れているんじゃないか?』と指摘されてしまいました。 該当場所まで言って、useでロードして見るものの、 >Can't locate object method "use" via package "DBIx::Class::Schema::Loader" うしろの( )指摘がなくなっただけでして、現在はこちらで立ち止まっている状態です。 推奨されるDBIC::Schemaには切り替えたいですので、今から引き続き挑戦して参ります。 (何か大ポカをやらかしていそうな気がします・・・)
282 :nobodyさん :2006/08/29(火) 16:02:25 ID:???.net 非常につまらないことが原因で本当に申し訳ないのですが・・・orz >>268 の件、ようやく望む通りの動きをするコーティングができました。 my $table = $c->model('DBIC::TblDiary'); $table->belongs_to(illust_bind => 'Test::Model::DBIC::TblIllust', 'have_illustno'); my $records = $table->search( { belong_dno => $dno }, { order_by => 'order_no', prefetch => ['illust_bind'] } ); 「belongs_to」にて最後に繋げたい、主キーではないカラム名を指示するだけだったようです。 お見苦しい質問をいたしまして、本当に申し訳ございませんでした。 レスを頂いた皆様に、心より御礼申し上げます。
283 :nobodyさん :2006/08/29(火) 19:52:13 ID:???.net おっさんさ、いいかげんにしたほうがいいとおもうよ。
284 :nobodyさん :2006/08/29(火) 20:56:33 ID:???.net オマエもな クダらん煽りいれるな
285 :nobodyさん :2006/08/30(水) 06:13:24 ID:???.net >>284 >>284
286 :nobodyさん :2006/08/30(水) 10:04:31 ID:???.net >>284 >>285 >>286 はい、終りにしような?
287 :nobodyさん :2006/10/31(火) 14:14:04 ID:WVctgpP6.net CatalystでDBIC使ってフォームからの値を一発でアップデート、クリエイトできますか? 以下やってみたけど、エラーとなりまうす my $result = $c->form; my $userdata = $c->model('HOGE')->find(uid => $uid); $userdata->update($result); あほなのでフォームの値をいちいちハッシュに入れてからじゃないとうまくできないです。 良い方法あったらおしえてください。
288 :nobodyさん :2006/10/31(火) 14:32:22 ID:???.net >>287 find_or_create
289 :nobodyさん :2006/10/31(火) 14:39:43 ID:???.net ちょっと伝わらなかったかもしれません。 ごめんなさい。 $userdata->update($result); これ$resultは$c->formなんですが、これだとエラーになるんですよ。 DBIx::Class::InflateColumn::update(): No such column _records いちいち $c->req->param('hoge1')をハッシュに入れて、update(\%hoges)とすればうまくいくんですけど いちいちハッシュにいれなくても良い方法ないですかね。
290 :nobodyさん :2006/10/31(火) 14:55:03 ID:???.net >>289 $c->formはCatalyst::RequestオブジェクトだからいきなりDBICのupdateに わたしてもそりゃだめだろう。渡すとすれば$c->form->paramsじゃないか? チェックはちゃんとしてあるのが前提だけどな。
291 :nobodyさん :2006/10/31(火) 16:08:20 ID:???.net $c->form->paramsはだめでした。 http://search.cpan.org/~jrobinson/DBIx-Class-WebForm-0.02/lib/DBIx/Class/WebForm.pm これためしてみましたが、CatalystのDBICに __PACKAGE__=>config(additional_base_classes => 'DBIx::Class::WebForm'); 入れてみたけど $userdata->update_from_form($result); で Can't locate object method "update_from_form" とでてしまう...
292 :nobodyさん :2006/10/31(火) 16:16:50 ID:???.net >>291 $c->form->paramsが返すハッシュリファレンスの中身は期待しているもの だったのか確認したのか? update_from_formはクラスメソッド。使い方がマニュアルと違うじゃん。
293 :nobodyさん :2006/11/07(火) 13:24:16 ID:oWVVtuaP.net DBI使ってtextファイルの中身をpostgresのtext型のフィールドに突っ込みたいんですが、 ファイルの中身は変数に一度突っ込んでから $sth->execut($text); する方法しかないのでしょうか? メモリの使用量が心配なんですが、他に良い方法はありませんか?
294 :nobodyさん :2006/11/07(火) 14:26:05 ID:???.net メモリが心配になるくらいでかいテキスト、突っ込んだあと どうやって利用するんだ? 取り出すときもメモリの心配するのか?
295 :293 :2006/11/07(火) 17:06:36 ID:???.net >>294 目が覚めますた。
296 :nobodyさん :2007/01/21(日) 06:10:16 ID:r5E3Q3qv.net $st = $db->prepare("SELECT student_id,question_update from $tbname; select count(question_update) from results;select count(student_id) from results;"); $res = $st->execute; while(@res = $st->fetchrow) { print <<ROW; <tr> <td> $res[0] </td> <td> $res[1] </td> </tr> ROW } print "$res[2]$res[3]\n";
297 :296 :2007/01/21(日) 06:11:07 ID:r5E3Q3qv.net DBIについての知識が乏しいのですが、締め切りが近いため、無理やりにプログラムを 作っている状態です。超初心者ですが、よろしくお願いします。 上記のように、$st = $db->prepare()の中に複数のMySQL文を入れることは 可能でしょうか? また、違う点でもご指摘があればよろしくお願いします。
298 :nobodyさん :2007/01/22(月) 03:48:16 ID:???.net 質問する前に試してみれば。
299 :nobodyさん :2007/02/01(木) 08:18:29 ID:???.net postgresqlですが、pg_enable_utf8してもフィールド名にはUTF8フラグが立たないようです。 fetchrowにラッパーかます以外、簡単な解決策はないでしょうか。
300 :nobodyさん :2007/04/12(木) 00:28:59 ID:???.net Apacheのバージョン Perlのバージョン DBIのバージョン DBD::MySQL(PG,Oracle)のバージョン MySQL(PostgreSQL,Oracle)データベースのバージョン 使える組み合わせの一覧表ってどこかにありませんか?
301 :nobodyさん :2007/04/12(木) 04:34:06 ID:???.net >>300 つくって公表して。
302 :nobodyさん :2007/05/06(日) 12:20:49 ID:???.net 使えない組み合わせなんてあんの?あんまり経験したことないんだが。
303 :あんのたん ◆PDq1wu.iD. :2007/10/28(日) 21:35:18 ID:wtKxxX0g.net ?2BP(1004) PerlからMySQLの.から始まる独自コマンドを実行したいのですが、どのようにしたら良いのでしょうか。以下のコードでやると(near ".": syntax error(1) at dbdimp.c line 271)とエラーが出ます。 use DBI; $DBName="TestDB.db"; $hDB = DBI->connect( "dbi:SQLite:dbname=$DBName","","",{PrintError=>0} ); if(!$hDB){ print "$DBI::errstr ¥n"; exit; } $sql =".table;"; $hst = $hDB->do($sql); if(!$hst){ print $hDB->errstr . "¥n"; exit; } print $hst; $hDB->disconnect;
304 :あんのたん ◆PDq1wu.iD. :2007/10/28(日) 21:36:29 ID:wtKxxX0g.net ?2BP(1004) 訂正orz ×MySQL ○SQLite
305 :nobodyさん :2007/10/28(日) 22:08:49 ID:???.net sqliteのドットから始まるコマンドのAPIはDBIにないと思う テーブル見るだけならsqlite_masterというマスターテーブル?に入ってるから $dbh->prepare('SELECT * FROM sqlite_master") とかあとはスクリプトの中からsqliteを直接実行するしかないんじゃないかな
306 :あんのたん ◆PDq1wu.iD. :2007/10/28(日) 22:17:01 ID:???.net ?2BP(1004) >>305 即答ありがとうございます。sqlite_masterとても参考になりました。
307 :nobodyさん :2007/10/29(月) 16:37:20 ID:???.net sqlite使ってる人いる? トランザクションでエラーでまくりなんだけど・・・ DBD::SQLite 1.3
308 :nobodyさん :2007/10/29(月) 19:34:44 ID:???.net 普通に使えてますが
309 :nobodyさん :2008/04/27(日) 18:20:14 ID:GdnUUJeu.net MySQLやPerlのDBIのモジュールを組み込んだりって大変じゃないのか。 調べたりすることが多くて、エラーが出てばっかりとかで、時間は浪費するし、 疲れる。困難の連続なんだが。 DBの接続を実現させるだけでも大変。 でも他人は俺とは違い、難なくクリアしてるんか。頭が良くて、要領もいいのか。 どうやって解決してるんだ。
310 :nobodyさん :2008/04/27(日) 21:25:12 ID:???.net 妥当な入れ物を作って、その入れ物に依存したコードを書いたほうがメリットが大きいだろ。 データの永続化としては、CSVもどきやCSV, YAML, Storable, DBMとかあるとおもうけど DBIでRDBMSが一番手堅くね?
311 :nobodyさん :2008/04/27(日) 21:25:54 ID:???.net もつろんORMはDBIx::Classなどを御自由に
312 :nobodyさん :2009/01/12(月) 15:15:30 ID:DVs9WJdR.net DBIx::Classの話題でないな。 覚えて慣れるまで大変だわ。
313 :myYyWxRRQ :2009/10/23(金) 02:50:19 ID:???.net I think these people want to hear my logic. ,
314 :nobodyさん :2009/10/23(金) 03:08:54 ID:Ax+yFrZW.net >>312 覚えるの大変な割りに使い勝手わりーよ ちょっと気の利いたことすると、すぐに括弧だらけになっちまう 気を利かせなけりゃDBIx::Simpleで充分だし
315 :nobodyさん :2010/04/03(土) 19:03:20 ID:E/aWmIoC.net DBI::mysqlを使用しているのですが、updateをwhileで2万回回して行っている 箇所があります。 うろ覚えではあるのですが、DBIで実装されている機能側でキャッシュして これを一括で実行する方法があったような気がするのですが、ぐぐっても 出てこなかったので、幻ですかね。。
316 :nobodyさん :2010/04/06(火) 19:08:31 ID:???.net >>312 ,314 そんなあなたたちに DBIx::Skinny
317 :nobodyさん :2010/10/09(土) 14:26:31 ID:???.net DBIx::Skinny のCPAN上の最新バージョンが 0.0721 でなんかちょっとやだ。いや別にいいんだけど。
318 :nobodyさん :2010/10/09(土) 15:38:48 ID:???.net >>317 「スキニーパンツ見てオナニー」と覚えよう
319 :Perl忍者 ◆M5ZWRnXOj6 :2010/10/14(木) 21:16:17 ID:FhDSY4IL.net 数ヶ月単位
320 :nobodyさん :2010/11/18(木) 14:10:29 ID:Cpwx90i/.net IIS <-> Perl <-> OCDB <-> Access(mdb) on WinXP という環境なんですが mdb上のメモ型フィールドのデータをPerl上で "SELECT memo FROM sampletable" として抽出しようとすると DBD::ODBC::st fetch failed: [Microsoft][ODBC Microsoft Access Driver]文字列データの右側が切り捨てられました。 列番号 1 (Title) (SQL-01004) at C:\yyy\xxx\www\test.pl line 28. というエラーが出て、配列にデータが格納されません。 メモ型のみで、テキスト型フィールドのデータはきちんと抽出され、配列に格納されます。 調べてみたところ、メモ型フィールドはSELECTで抽出できないという文章を目にしたのですが もしそうなのであれば、255Byte以上の文字列はどのようにDBへ出し入れすればよいのでしょうか? ちなみに、Access上のSQLクエリでSELECTにて抽出した場合には、メモ型フィールドもきちんと抽出されてきます。 同じ命令をOCDB経由で投げると上記エラーが出てきます。 どなたが、救いの手を・・・
321 :320 :2010/11/19(金) 16:01:37 ID:???.net メモ型でもフィールド内が40文字以下ならば、抽出可能なことが判明。 それを超えるとエラーしてしまう。 テキスト型でも、フィールドサイズが255文字までなので、それ以下しか扱えないということになってしまいます。 相変わらず、メモ型の動作が想定外な為、自己解決ならず。
322 :nobodyさん :2011/01/03(月) 19:39:28 ID:???.net テーブル名にプレースホルダ表記は使えませんか? $stl = $dbh->prepare("CREATE TABLE ? ( ? char(2) )"); $stl->execute($table_name, $key_name); 文法エラー: CREATE TABLE 'my_table' ( 'my_key' char(2) ) ほんとうは CREATE TABLE my_table ( my_key char(2) ) じゃなきゃだめ
323 : 【小吉】 【22円】 【46.5m】 電脳プリオン :2013/01/01(火) 14:24:28.53 ID:???.net ?PLT(12079) ∧_∧ ( ・∀・) | | ガガッ と ) | | Y /ノ .人 / ) .人 < >_∧∩ _/し' < >_∧∩`Д´)/ (_フ彡 V`Д´)/ / ←>>79 / ←>>94
324 :nobodyさん :2023/07/20(木) 06:51:47.60 ID:tRwx+S2Gr 防衛名目の軍拡利権,少子化名目の私利私欲利権、旅行支援名目の氣侯変動災害連發騷音私権侵害の強盜殺人利権による白々しい増税の数々 安全保障を取り巻く状況とか何も変わってないし,原爆使ってみたかった某ならす゛者国家はWW2て゛日本に先制攻撃させる工作してたわけだが. キチガヰナセ゛レンスキ‐と共謀してのロシア攻撃と同し゛手法で.台湾ついでに曰本も巻き込んて゛自民公明と共謀してクソシナ攻撃したいだけな 貧乏人が子供なんて作ったら遺棄罪で逮捕するのか゛筋た゛ろうに.子供給付とか孑や嫁と得た効用の対価を赤の他人から奪い取る不当利得だわな 他人の孑を連れ込んて゛育てる行為を推進するとか,乱交推進して誰の子か分からなくするとかしないと、憲法の下の平等なんて確保て゛きんた゛ろ 小池デタラメ百合子なんて私立に行かせてる金持ちの親に毎年10萬くれてやるとか.税金て゛個人の資産形成させるなら税金泥棒公務員利権の ナマポやら廃止して給付付き税額控除とかやるのか゛筋だろ、つか風俗て゛働いて子育てしてる自立した女はいくらて゛もいるた゛ろうに.そんな女と 陳情寄生蟲女と.温室効果カ゛スに騷音にコ□ナにとまき散らして人殺して他人の権利を強奪して儲けてる強盜殺人女とクズっぷり比較してみろ 創価学會員は、何百萬人も殺傷して損害を与えて私腹を肥やし続けて逮捕者まで出てる世界最悪の殺人腐敗組織公明党を 池田センセ−が□をきけて容認するとか本気で思ってるとしたら侮辱にもほどか゛あるぞ! hΤtρs://i,imgur、com/hnli1ga.jpeg
93 KB
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★
本文 スレッドタイトル 投稿者