标签: postgresql-simple

与Database.PostgreSQL.Simple的count(*)类型兼容性错误?

错误是

*** Exception: Incompatible {errSQLType = "int8", errHaskellType = "Int", errMessage = "types incompatible"}
Run Code Online (Sandbox Code Playgroud)

看起来count(*)查询中返回的任何值都必须转换为Integer而不是Int.如果我将这些特定变量更改为Integer类型,则查询可以正常工作.

但是在具有相同确切代码的另一台机器上没有引发此错误.第一台机器是32位,另一台机器是64位.这是我能辨别的唯一区别.

有没有人对正在发生的事情有任何见解?

postgresql haskell postgresql-simple

5
推荐指数
0
解决办法
375
查看次数

使用postgresql-simple创建流媒体管道源

postgresql-simple 提供用于流式查询的功能,例如

fold 
  :: (FromRow row, ToRow params)
  => Connection -> Query -> params -> a -> (a -> row -> IO a) -> IO a
Run Code Online (Sandbox Code Playgroud)

我想创建一个充分利用流媒体的管道源.

mySource :: (FromRow row, Monad m) => Source m row
Run Code Online (Sandbox Code Playgroud)

不幸的是,因为IO出现在一个逆变的位置(我认为?)fold,我真的很难与这些类型斗争.以下类型检查,但在产生值之前折叠整个流.

getConduit :: Connection -> IO (C.ConduitM () Event IO ())
getConduit conn = fold_ conn queryEventRecord CL.sourceNull foo
  where
    foo :: C.ConduitM () Event IO () -> Event -> IO (C.ConduitM () Event IO ())
    foo cond evt …
Run Code Online (Sandbox Code Playgroud)

haskell conduit postgresql-simple

4
推荐指数
1
解决办法
321
查看次数

postgres-simple - 没有因使用“查询”而产生的 (ToRow Int) 实例

我是 Haskell 的新手,老实说,我遇到了困难。但它扩展了我的想法,所以我们走了。我正在尝试运行一个非常简单的 Web 服务器,它查询 Postgres 数据库并应将结果作为 JSON 返回。

查询非常简单:“Select id,data from MYTABLE where id = 1”

但是 haskell 的类型系统现在正在杀死我,我的行为的最终类型不匹配。我使用SpockPostgreSQL-Simple作为组合。

大多数教程对于我想要做的事情来说要么很简单,要么很困难。我介于两者之间,错过了很多对 Haskell 的理解,我之前的很多问题我已经通过简单的复制和粘贴解决了,并且得到了一个简单的版本。

但是一旦我尝试传递路由变量,我就会失败。这是我的工作版本。我的数据库表在这里称为“信封”,重要的调用是它说get "json"

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE FlexibleInstances #-}

module Main where

import Web.Spock
import Web.Spock.Config
import Database.PostgreSQL.Simple
import Data.Pool
import Data.Aeson (ToJSON(toJSON), object, (.=),Value)
import  Database.PostgreSQL.Simple.FromRow

type AppAction a = SpockActionCtx () Connection AppSession AppState a

data AppState = EmptyState
data AppSession = EmptySession

data Envelope = Envelope { …
Run Code Online (Sandbox Code Playgroud)

postgresql json haskell haskell-spock postgresql-simple

2
推荐指数
1
解决办法
1233
查看次数

'toRow'不是'ToRow'类的(可见)方法

我正在学习Haskell所以我决定编写一个Web应用程序.我选择PostgreSQL Simple来处理数据库.我成功连接到它并尝试了简单的数学运算,但我在尝试将记录映射到数据时遇到了问题.此代码无法编译:

module Handlers.SurveyReplies where

import Database.PostgreSQL.Simple

data AnswersSet = AnswersSet {
  sex ? Integer,
  ageRange ? Integer,
  country ? Integer,
  commune ? Maybe Integer
} deriving (Show)

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

instance ToRow AnswersSet where
toRow r = [toField (sex r), toField (ageRange r), toField (country r), toField (commune r)]
Run Code Online (Sandbox Code Playgroud)

错误是:

    ‘fromRow’ is not a (visible) method of class ‘FromRow’
   |
17 |   fromRow = AnswersSet <$> field …
Run Code Online (Sandbox Code Playgroud)

haskell postgresql-simple

1
推荐指数
1
解决办法
416
查看次数