CPAN数据库接口 Perl 中用于一般数据库使用的最佳数据库接口是什么?有一些更好的选择吗?

有帮助吗?

解决方案

如果您只是寻找低级数据库访问 - 您向其提供任何 SQL 字符串(可以选择使用占位符和绑定值),它会运行您的查询并返回结果 - 那么是的, 数据库接口 到目前为止,这是你最好的选择。

如果您想要一个更高级别的接口(即,在代码中需要很少或不需要使用原始 SQL 的接口),那么有几个 ORM(对象关系映射器) 可用于 Perl。查看 ORM 有关更多信息和链接,请访问 Perl Foundation 的 Perl 5 wiki 页面。(如果您需要帮助在其中进行选择或有具体问题,您可以缩小此问题的焦点,或者发布另一个问题。)

其他提示

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。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top