题
是 CPAN数据库接口 Perl 中用于一般数据库使用的最佳数据库接口是什么?有一些更好的选择吗?
其他提示
DBI 是 Perl 和 DBMS 之间的“低级”接口。这几乎是这样做的唯一现实选择。相当于Java中的JDBC。如果您为 Perl 和数据库之间的低级接口选择 DBI 以外的任何东西,您会很疯狂(或者有一个非常具体的用例)。
在 DBI 之上,还有各种对象/关系映射器,它们使数据库的使用变得更加容易和清晰。
一些常见/更流行的是
如果您选择使用普通 DBI
对于不需要ORM的任务,我强烈建议您看看 DBIx::简单.
它不是替代品,而是一个设计良好的 API DBI
这使简单的事情变得简单而复杂,而不会失去任何一个灵活的东西 DBI
.
你有没有发现你必须在数据库中查找看似简单的东西 DBI
文档,例如将查询的结果作为哈希(列及其值)的阵列(行)?和 DBIx::Simple
这很简单:
# DBI
my $rows = $dbh->selectall_arrayref($sql, { Slice => {} });
# tell it we want "hashes" (yuck!) ^^^^
# DBIx::Simple
my $rows = $db->query($sql)->hashes; # does the same as the above code underneath!
看看 例子 了解更多。此外,与集成 SQL::摘要 使简单的查询变得轻而易举。它在我本来会使用的所有代码中都使用它 DBI
以前,我没有回头。
值得指出的是,绝大多数“高级”接口(例如 SQL::Abstract)和(DBIx::Simple)在实际执行查询时都使用 DBI 本身。DBI 几乎是 Perl 中公认的数据库连接标准方法。
如果您想使用对象(进行内省!),请查看 Fey::ORM,它基于 Moose 实现了 ORM。它还具有非常类似于 SQL 的语法,因此它比其他一些 ORM 框架更适合我基于 RDBMS 的大脑。
看一下 类别::DBI 以及。
在我看来,DBI确实是一个不错的选择。我积极使用 DBD::mysql 并发现它是一个非常好的解决方案。
我们也在所有项目中使用 DBI 模块。很多时候,我们在其之上为特定应用程序构建自定义包,但其下方是核心 DBI 模块。通常,直接使用 DBI 模块功能会更容易。
DBI 很棒,但 DBD 模块的质量可能会有所不同。我被 DBD:pg 的一个版本中的一个“功能”所困扰。它喜欢将结果的完整数据加载到内存中,而不是使用游标对其进行交互。
像往常一样 - 警告程序员。
DBI 震撼!但对于一个功能齐全、速度快的 ORM,始终选择 DBIx::Class。
基本上您首先应该习惯只使用 DBI。