2017-09-04 4 views
1

내 쿼리 [VarcharIntDate]에있는 데이터에 어떻게 액세스합니까? haskell postgresql-simple, 더 광범위한 쿼리에서 특정 데이터에 액세스하는 방법

data VarcharIntDate = VarcharIntDate { 
    vc :: Maybe String, 
    i :: Maybe Int, 
    d :: Maybe Date 
} deriving (Show) 

instance FromRow VarcharIntDate where 
    fromRow = VarcharIntDate <$> field <*> field <*> field 

나는 그것을 인쇄,하지만 난 'IO는 [VarcharIntDate]'

print =<< (query_ conn "select vc,i,d from varintdate" :: IO [VarcharIntDate]) 

하지만 내가하고 싶은 일을하기 위해 처리하는 방법을 이해 돈`t 때문에 다른 그것으로 많은 일을 못할 방법을 이해 모든 행에서 반환 된 [VarcharIntDate] 또는 'i'의 n 번째 행에서 'd'에 액세스하므로 쿼리에서 데이터를 가져 와서 작업을 시작할 수 있습니다.

답변

1

실제로 이미 IO [VarcharIntDate]의 결과를 처리하고 있습니다. =<<print과 함께 사용합니다. 그래서 여기에 우리가 할 수있는

p = 2 -- sample p 

main = do 
    res <- query_ conn "select vc,i,d from varintdate" :: IO [VarcharIntDate] 
    print (map i res) -- print all i's 
    print (d (res!!p)) -- print d of the p-th row 

: 당신은 map 핑 (ping)을 수행하거나, 같은 행의 N 번째 요소에 액세스하여 query_의 결과를 처리 할 수 ​​

main = do -- or another function 
    result <- query_ conn "select vc,i,d from varintdate" :: IO [VarcharIntDate] 
    print result 

:이 동일합니다 res!!p을 사용하여 p 번째 행에 액세스 한 다음 d 게터를 호출하여 해당 행의 d을 가져옵니다.

i을 모두 받으려면 map i을 사용할 수 있습니다.