2008-09-03 76 views

回答

29

如果你只是在尋找低級別的數據庫訪問—你餵它任何SQL字符串(可選地包含佔位符和綁定值)並運行查詢並返回結果—那麼是的,DBI是你最好的選擇,到目前爲止。

如果你想要一個更高級別的接口(即在你的代碼中很少或不需要使用原始SQL),那麼有幾個ORM(object-relational mappers)可用於Perl。查看Perl Foundation的Perl 5 wiki上的ORM頁面以獲取更多信息和鏈接。 (如果你想幫助選擇其中或有具體問題,您可以縮小這個問題的重點或者是發佈一個又一個。)

1

在我看來,DBI是一個非常好的選擇。我主動使用了DBD :: mysql,並發現它是一個非常好的解決方案。

1

我們在所有項目中也使用DBI模塊。很多時候,我們爲特定的應用程序構建了一個自定義包,但下面是核心DBI模塊。通常,直接使用DBI模塊功能會更容易。

18

DBI是Perl和DBMS之間的「低級」接口。這幾乎是唯一現實的選擇。在Java中與JDBC相當。對於Perl和數據庫之間的低級接口,你會瘋狂(或者有一個非常特殊的用例)爲DBI之外的其他任何東西選擇它。

在DBI之上,有各種對象/關係映射器,它們使數據庫的工作變得更加簡單和清晰。

一些常見的/更流行的是

1

DBI是偉大的,但DBD模塊的質量各不相同。在一個版本的DBD中,我被一個'功能'咬了:pg。它喜歡將你的結果的完整數據加載到內存中,而不是用遊標對它進行交涉。

按照慣例 - 警戒程序。

3

如果你想與對象的工作(與內省!),看看精類:: ORM基於穆斯它實現ORM。它也有非常像SQL的語法,所以它適合我的基於RDBMS的大腦比其他一些ORM框架更好一些。

1

DBI岩石!但是對於一個適合全功能的ORM來說,這個ORM一直都是快速的DBIx :: Class。

10

如果您選擇將普通的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和 我不會回頭。

+0

DBIx ::簡單的允許通過名稱結果更清潔的訪問,而不是由DBI或數組索引(如果你的表更改格式,它可以左右移動)所使用的奇怪的哈希方法。 – 2009-07-22 11:28:00

4

值得指出的是,絕大多數的「更高級別」的接口(如SQL ::摘要)和(DBIx ::簡單)使用DBI自身實際執行查詢時。 DBI幾乎是Perl中數據庫連接的公認標準方法。

0

基本上你應該使用首先只使用DBI。

+0

這是如何回答這個問題的? – ImaginaryHuman072889 2017-10-30 13:09:21

相關問題