2012-10-22 26 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) –

回答

相关问题