是CPAN DBI在Perl中用于常规数据库使用的最佳数据库接口?有更好的选择吗?我应该使用哪个Perl数据库接口?
回答
如果你只是在寻找低级别的数据库访问—你喂它任何SQL字符串(可选地包含占位符和绑定值)并运行查询并返回结果—那么是的,DBI是你最好的选择,到目前为止。
如果你想要一个更高级别的接口(即在你的代码中很少或不需要使用原始SQL),那么有几个ORM(object-relational mappers)可用于Perl。查看Perl Foundation的Perl 5 wiki上的ORM页面以获取更多信息和链接。 (如果你想帮助选择其中或有具体问题,您可以缩小这个问题的重点或者是发布一个又一个。)
看看Class::DBI。
在我看来,DBI是一个非常好的选择。我主动使用了DBD :: mysql,并发现它是一个非常好的解决方案。
我们在所有项目中也使用DBI模块。很多时候,我们为特定的应用程序构建了一个自定义包,但下面是核心DBI模块。通常,直接使用DBI模块功能会更容易。
DBI是Perl和DBMS之间的“低级”接口。这几乎是唯一现实的选择。在Java中与JDBC相当。对于Perl和数据库之间的低级接口,你会疯狂(或者有一个非常特殊的用例)为DBI之外的其他任何东西选择它。
在DBI之上,有各种对象/关系映射器,它们使数据库的工作变得更加简单和清晰。
一些常见的/更流行的是
DBI是伟大的,但DBD模块的质量各不相同。在一个版本的DBD中,我被一个'功能'咬了:pg。它喜欢将你的结果的完整数据加载到内存中,而不是用游标对它进行交涉。
按照惯例 - 警戒程序。
如果你想与对象的工作(与内省!),看看精类:: ORM基于穆斯它实现ORM。它也有非常像SQL的语法,所以它适合我的基于RDBMS的大脑比其他一些ORM框架更好一些。
DBI岩石!但是对于一个适合全功能的ORM来说,这个ORM一直都是快速的DBIx :: Class。
如果您选择将普通的DBI
用于不需要ORM的任务,那么我强烈建议您查看DBIx::Simple。
这不是一个替代品,但对DBI
,让简单的事情简单的和复杂的事情成为可能,顶部设计得非常好API没有 丢失任何DBI
的的flexibilty的。
你有没有发现,你不得不寻找看似简单的事情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!
看看在examples更多。此外,与SQL::Abstract的集成使得简单的查询变得轻而易举。它使用它在我所有的代码,我会用以前DBI
和 我不会回头。
值得指出的是,绝大多数的“更高级别”的接口(如SQL ::摘要)和(DBIx ::简单)使用DBI自身实际执行查询时。 DBI几乎是Perl中数据库连接的公认标准方法。
- 1. 我应该使用哪个库?
- 2. 我应该使用哪个Python XML库?
- 3. 我应该使用哪一个OpenGL库?
- 4. 我应该使用哪个JavaScript库?
- 5. 我应该使用哪个Box2D JavaScript库?
- 6. 我应该使用哪个数据可视化库
- 7. 我应该使用哪个数据库后端?
- 8. 我应该使用Android应用程序使用哪个数据库?
- 9. Cassandra数据库,哪个python接口?
- 10. 我应该在JavaScript(AngularJS)应用程序中使用哪个数据库?
- 11. 我应该使用哪个数据库,不需要安装应用程序
- 12. 我应该使用哪个Perl web框架?
- 13. 我应该使用哪个Perl测试模块?
- 14. 我应该在Windows上使用哪个版本的Perl?
- 15. 我应该如何使用数据库?
- 16. 我应该使用哪种数据库最适合我的GIS应用程序?
- 17. 我应该使用标记接口吗?
- 18. 我应该从哪个数据库设计开始?
- 19. 我应该帮助哪个开源C++数据库GUI项目?
- 20. 我应该将哪个数据库用于小型网络应用程序
- 21. 我应该将哪个数据库用于本地应用程序?
- 22. 数据库设计 - 我应该使用哪种设计?两个选项
- 23. 我应该在Firefox扩展中使用哪个轻量级数据库?
- 24. 我应该使用哪个数据库以获得最佳性能
- 25. 我们的VB.NET项目应该使用哪个数据库:wamp或mysql
- 26. 连接池或数据源?我应该把哪个放入JNDI?
- 27. 应该使用哪个连接池?
- 28. Windows窗体应用程序 - 我应该使用哪种数据库类型?
- 29. 我应该为每个数据库使用一个类吗?
- 30. 我应该实现哪个接口来解析方法
DBIx ::简单的允许通过名称结果更清洁的访问,而不是由DBI或数组索引(如果你的表更改格式,它可以左右移动)所使用的奇怪的哈希方法。 – 2009-07-22 11:28:00