是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