使用Conduits从rawQuery中获取数据

时间:2013-08-23 00:31:15

标签: haskell yesod conduit

我承认,鉴于我有限的Haskell知识,我并不太了解Conduits。所以,如果有人可以指导我如何完成这项任务,那就表示赞赏:我想获取rawQuery操作的输出并将其存储在一个变量中,然后我可以在我的Hamlet文件中再次使用它。例如:

let sql = "SELECT sum(value) as total, category FROM person GROUP BY category ORDER BY total desc;"
   --- ??  how to store this runDB output in a variable?
runDB $ rawQuery sql [] $$ CL.map (convertFromPersistent) 
where 
    convertFromPersistent [] = Nothing
    convertFromPersistent [PersistInt64 sum,PersistInt64 category] = Just (sum,category)
    convertFromPersistent _ = Nothing

当我这样做时

runDB $ rawQuery sql [] $$ CL.mapM_ (liftIO. print. convertFromPersistent) 

我在日志文件中看到输出。但是,我想将输出传递给元组数组,以便我可以在我的Hamlet文件中使用它。感谢您的帮助!

谢谢,

1 个答案:

答案 0 :(得分:5)

通过反复试验,我发现这有效:

res <- runDB $ rawQuery sql [] $$ CL.map (convertFromPersistent) =$ CL.consume