我正在构建的DBIx::Class应用程序中使用Catalyst。它工作得很好,但是有时候我需要使用自己开发的数据库函数,这些函数非常适合我的需求。因此,我需要一个dbh。但是,由于我已经在使用DBIx::Class
,所以我知道它已经具有正在使用的dbh。为了避免与数据库建立另一个不必要的连接,我只想使用DBIx::Class
已经创建的dbh。我知道DBIx::Class::Storage::DBI模块有两种方法dbh
和dbh_do
,但是我不确定这两者之间有什么区别,以及它们是否是访问dbh的最佳方法,我不确定。谁能告诉我从DBIx::Class
应用程序获取dbh的最佳方法是什么?我希望可以转发给该方法的方法是将dbh存储在如下所示的存储中:
sub dbh :Private {
my ($self, $c) = @_;
$c->stash->{dbh} = #get dbh from DBIx::Class here
}
谢谢!
最佳答案
我总是必须查一下。假设您有一个模式对象的实例,则可以通过storage
方法获取其存储对象。假设这是一个 Storage::DBI
,那么有一个 dbh
方法可用,它将为您提供数据库句柄。所以:
my $dbh = $c->model( 'My::DB' )->storage->dbh;
应该做到的。
关于database - DBIx::Class获取dbh,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14719977/