[英]Which Perl database interface should I use?
如果您選擇將純DBI
用於不需要ORM的任務,我強烈建議您查看DBIx :: Simple 。
它不是一個替代品,而是一個在DBI
之上設計得非常好的API,可以使簡單的事情變得簡單而復雜,而不會失去任何DBI
的靈活性。
你有沒有發現你必須在DBI
文檔中查找看似簡單的東西,比如將查詢結果作為散列的arrayref(行)(列及其值)? 使用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 :: Abstract的集成使得簡單的查詢變得輕而易舉。 它在我之前使用過DBI
所有代碼中都使用它,我不會回頭看。
值得指出的是,絕大多數“高級”接口(如SQL :: Abstract)和(DBIx :: Simple)在實際執行查詢時都使用DBI本身。 DBI幾乎是Perl中數據庫連接的公認標准方法。
如果你想使用對象(有內省!),請看看基於Moose實現ORM的Fey :: ORM。 它也具有非常類似SQL的語法,因此它比其他一些ORM框架更適合我的基於RDBMS的大腦。
看看Class :: DBI也是如此。
在我看來,DBI是一個非常好的選擇。 我積極地使用了DBD :: mysql,發現它是一個非常好的解決方案。
我們在所有項目中也使用DBI模塊。 很多時候,我們為特定的應用程序在它上面構建一個自定義包,但在其下面是核心DBI模塊。 通常,直接使用DBI模塊功能會更容易。
DBI很棒,但DBD模塊的質量可能會有所不同。 我被其中一個版本的DBD中的'功能'咬了一口:pg。 它喜歡將結果的完整數據加載到內存中,而不是使用游標進行交互。
按照慣例 - Caveat programmor。
DBI搖滾! 但是對於一個適當的全功能ORM來說,DBIx :: Class一直很快。
基本上你應該習慣只使用DBI。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.