Haskell是否有像ActiveRecord或Sequel这样的SQL查询编写库?

dan*_*dan 13 haskell hdbc

随着Ruby的ActiveRecord的或续集,你可以逐步建立SQL查询,添加wherejoinorder条款,这取决于在运行时条件的查询.

这是一个简单的例子,取自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
Run Code Online (Sandbox Code Playgroud)

该示例显示了articles如果HTTP请求查询参数名为hiddenequals,WHERE子句如何附加到表上的基础SQL查询1.

我一直在Haskell中看HDBC和postgresql-simple.似乎postgresql-simple故意使得从动态连接的部分构建SQL查询变得困难,以防止SQL注入.HDBC似乎足够灵活,可以根据运行时的条件构建不同结构的SQL查询,但它似乎没有提供ActiveRecord或Sequel提供的抽象级别.

任何人都可以建议使用其中一个Haskell数据库模拟ActiveRecord的动态查询构建工具吗?

如果HDBC是要走的路,我很好.但是可以理解插图.

我想我正在寻找的是能够针对PostgreSQL后端动态组合查询.

ami*_*dfv 7

你可能想要Persistent,你可能想要HaskellDB,你可能想要像Esqueleto这样的东西.

以下是对每个权衡的良好讨论:http: //blog.felipe.lessa.nom.br/?p = 68


sin*_*yma 5

您可能会发现http://hackage.haskell.org/package/esqueleto对于此应用程序很有趣。