2012-10-22 25 views
13

使用Ruby的ActiveRecord或Sequel,您可以逐步構建SQL查詢,根據運行時的條件將wherejoinorder子句添加到查詢中。Haskell是否有像ActiveRecord或Sequel這樣的SQL查詢組合庫?

下面是一個簡單的例子,從ASCIIcasts採取:

def index 
    @articles = Article.order('name') 

    if params[:hidden] 
    @articles = @articles.where(:hidden =>(params[:hidden] == "1")) 
    end 

    respond_to do |format| 
    format.html # index.html.erb 
    format.xml { render :xml => @articles } 
    end 
end 

的例子顯示了一個WHERE子句可以如何被附加到底層的SQL查詢的articles表,如果名爲hidden HTTP請求查詢參數等於1

我一直在看Haskell的HDBC和postgresql-simple。看起來,postgresql-simple有意使得難以從動態連接的部分構建SQL查詢,以防止SQL注入。 HDBC似乎足夠靈活,可以根據運行時的條件構建不同結構的SQL查詢,但似乎沒有提供ActiveRecord或Sequel提供的抽象級別。

任何人都可以提出一個很好的方法來模擬使用Haskell數據庫庫之一ActiveRecord的動態查詢建設設施嗎?

如果HDBC是要走的路,我很好。但一個例證將不勝感激。

我想我正在尋找的是動態組合查詢的能力,對PostgreSQL後端。

+0

這聽起來像你想haskelldb代替。對不起,我不熟悉它。不過,它確實有PostgreSQL後端。 –

+0

這可能有所幫助:[使用HaskellDB來取消映射表的記錄的基本示例](http://stackoverflow.com/q/7697620/196844) –

回答

相關問題