有谁知道Class :: DBI的状态是什么?我看到它最后一次更新于2007年10月4日,是否还有人正在研究这个项目还是只是为了死?谢谢.
要使用Class :: DBI进行插入,您只需执行以下操作:
my $object = Object::DB->insert({ a => 1, b => 2, c => 3, ...});
Run Code Online (Sandbox Code Playgroud)
但是没有更新的东西.我能想到的最好的是先选择记录然后更新它:
my $object = Object::DB->retrieve($id);
my $object->set( a => 1, b => 2, c => 3, ...};
$object->update;
Run Code Online (Sandbox Code Playgroud)
这是没有效率的,因为我必须首先执行SELECT,然后执行UPDATE而不是只执行一次UPDATE.
使用Class :: DBI有更好的方法吗?我不想做42 $ object-> a(1),$ object-> b(2)等,$ object-> update;
我目前正在对DBIx :: Class进行一些研究,以便从Class :: DBI迁移我当前的应用程序.老实说,在配置结果类时,我对DBIx :: Class有点失望,使用Class :: DBI我可以通过在没有代码生成器的情况下调用on函数来设置模型上的元数据等我的问题是. ..我可以用DBIX :: Class做同样的事情似乎DBIx :: Class中不支持客户端触发器,或者我没有查看错误的文档?
我正在为现有的数据库结构开发一个大型的Class :: DBI实现,并且遇到了从Class :: DBI清除缓存的问题.这是一个mod_perl实现,因此类的实例在访问它的时间之间可能相当老.从手册页中我发现了两个选项:
Music::DBI->clear_object_index();
Run Code Online (Sandbox Code Playgroud)
和:
Music::Artist->purge_object_index_every(2000);
Run Code Online (Sandbox Code Playgroud)
现在,当我将clear_object_index()添加到DESTROY方法时,它似乎运行,但实际上并没有清空缓存.我能够手动更改数据库,重新运行请求,它仍然是旧版本.purge_object_index_every表示它会在每n个请求中清除索引.将其设置为"1"或"0",似乎有时会清除索引.我希望这两个中的一个能够工作,但由于某些原因它不会每次都这样做.更像是5次中的1次.
清除这个的任何建议?
我想使用Class :: DBI创建一个新对象.该对象的一个字段是BLOB类型.我有一个文件句柄我想用于这个数据,但显然,这样做是行不通的:
my $item = My::Class::DBI::Class->insert({
foo => $bar,
biz => $baz,
blob => $my_filehandle
});
Run Code Online (Sandbox Code Playgroud)
我缺少一些技巧吗?
谢谢!
我想找到由Perl ORM包(如Class :: DBI)生成的确切SQL语句.我不是在寻找为简单的插入和删除生成的SQL,而是为了稍微复杂的对象操作(例如,在父表中插入行的子节点的表中的行)进行行修改
有没有办法得到它?