使用 Ruby 的 ActiveRecord 或Sequel,您可以逐步构建 SQL 查询,根据运行时的条件向查询添加where
or join
or子句。order
这是一个简单的例子,取自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
该示例显示了如果名为equalsarticles
的 HTTP 请求查询参数,如何将 WHERE 子句附加到表上的基础 SQL 查询。hidden
1
我一直在查看 Haskell 中的 HDBC 和 postgresql-simple。似乎 postgresql-simple 故意使从动态连接的部分构建 SQL 查询变得困难,以防止 SQL 注入。HDBC 似乎确实足够灵活,可以根据运行时的条件构建不同结构的 SQL 查询,但它似乎没有提供 ActiveRecord 或 Sequel 提供的抽象级别。
任何人都可以建议一种使用 Haskell 数据库库之一来模拟 ActiveRecord 的动态查询构建工具的好方法吗?
如果 HDBC 是要走的路,我可以接受。但一个插图将不胜感激。
我想我正在寻找的是针对 PostgreSQL 后端动态组合查询的能力。