2012-10-22 2 views
13

Ruby의 ActiveRecord 또는 Sequel을 사용하면 런타임에 조건에 따라 where 또는 join 또는 order 절을 쿼리에 점진적으로 추가하여 SQL 쿼리를 작성할 수 있습니다.Haskell에는 ActiveRecord 또는 Sequel과 같은 SQL 쿼리 작성 라이브러리가 있습니까?

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 

이 예는 hidden를라는 이름의 HTTP 요청 쿼리 매개 변수가 1 동일한 경우 WHERE 절은 articles 테이블에 기본 SQL 쿼리에 추가 할 수있는 방법을 보여줍니다 : 여기

ASCIIcasts에서 가져온 간단한 예입니다 .

저는 하스켈에서 HDBC와 postgresql-simple을보고있었습니다. postgresql-simple은 의도적으로 SQL 삽입을 방지하기 위해 동적으로 연결된 부분에서 SQL 쿼리를 작성하는 것을 어렵게 만듭니다. HDBC는 런타임시 조건에 따라 다르게 구조화 된 SQL 쿼리를 구축 할만큼 유연한 것처럼 보이지만 ActiveRecord 또는 Sequel에서 제공하는 추상 수준을 제공하지는 않습니다.

누구나 Haskell 데이터베이스 라이브러리 중 하나를 사용하여 ActiveRecord의 동적 쿼리 구축 기능을 에뮬레이트하는 좋은 방법을 제안 할 수 있습니까?

HDBC가가는 길이라면, 나는 그걸로 충분합니다. 그러나 삽화는 높이 평가 될 것이다.

내가 찾는 것은 PostgreSQL 백엔드에 대해 쿼리를 동적으로 작성하는 기능입니다.

+0

그것은 소리 :

다음은 각각의 장단점을 잘 설명이다. 미안하지만, 나는 그것에 익숙하지 않다. PostgreSQL 백엔드가 있습니다. –

+0

이것은 도움이 될 수 있습니다 : [HaskellDB를 사용하여 테이블의 레코드를 해제하는 기본 예제] (http://stackoverflow.com/q/7697620/196844) –

답변