问题标签 [postgresql-simple]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
433 浏览

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

错误是

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

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

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

0 投票
1 回答
875 浏览

postgresql - postgresql-简单查询错误

编辑:我现在对出了什么问题有了更好的了解。当我以普通的 old 执行该查询时psql,我得到以下结果:

那么,我要找回 3 个字符串?但是,我说我要回来了IO [Only String]。我敢肯定这是我的类型签名在这里搞砸了......

我正在尝试使用postgresql-simple带有Haskell. 我的代码与我看到的错误一起粘贴在下面。有人有什么想法吗?

我的数据库被调用verbos,在其中,我有一个名为gerund. 我能够运行query_包含:conn "SELECT 2 + 2"并且工作正常。我还可以使用默认信息指定的默认数据连接到我的数据库(密码='postgres':(psql -h localhost -p 5432 -U postgres来自文档[ 1 ])

给我以下错误:

ConversionFailed {errSQLType = "3 个值:[(Basic {typoid = Oid 1043, typcategory = 'S', typdelim = ',', typname = \"varchar\"},Just \"abandonar\"),(Basic {typoid = Oid 1043, typcategory = 'S', typdelim = ',', typname = \"varchar\"}, 只是 \"abandonando\"),(基本 {typoid = Oid 1043, typcategory = 'S', typdelim = ' ,', typname = \"varchar\"},Just \"abandoning\")]", errSQLTableOid = Nothing, errSQLField = "", errHaskellType = "1 slot in target type", errMessage = "不匹配的列数在目标类型中转换和编号"}

0 投票
2 回答
855 浏览

postgresql - Haskell PostgreSQL 简单 FromField

我在为自定义枚举数据类型定义 FromField 实例时遇到问题:

为了Role在我的数据库中表示,我最有可能使用整数 0 和 1(以后可以添加更多角色)smallint

Review在我的其他数据类型中使用,它代表我的 db 表中的一行:

这是我的 ReviewAssignment 的 FromRow 实例:

现在我只是缺少以下我不明白如何实现的内容:

0 投票
1 回答
252 浏览

postgresql - PostgreSQL Simple 在一个元组中最多支持 10 个变量,但我需要更多

我有一个带有一堆列的 postgresql 表,大约有 20-30 列。Posgresql Simple 在一个元组中最多支持 10 个变量https://hackage.haskell.org/package/postgresql-simple-0.5.0.0/candidate/docs/Database-PostgreSQL-Simple-ToRow.html#v:toRow

这对我来说还不够。我该如何解决?我不能使用我拥有的原始“数据”。如果我将它用于插入,那么 Postgresql 生成的“id”和其他字段将从客户端传递,它会导致异常。

创建一个新的“数据”然后实施FromJson以及可能的其他实例可能是矫枉过正的。那么有没有其他的解决办法呢?

0 投票
3 回答
330 浏览

postgresql - 函数上的 PostgreSQL-simple `execute` 失败,“执行导致 Col 1 列结果”

我想从 Haskell 执行一个 Postgres 函数,它更新 3 行,但用RETURNS VOID. 我按如下方式运行该函数:

但这会导致:

查询不返回结果:

如何从 Haskell 执行这个 Postgresql 函数?

0 投票
1 回答
450 浏览

postgresql - haskell postgresql-simple不兼容类型_int8和Int64(和整数)

下面的错误函数是名为 subdivide 的程序的一部分,该程序在服务器端使用 Postgis 地理空间交叉点,并在客户端处理返回的 Int64 数组。

它在 Stack 下构建和运行,解析为 Nightly 2016-08-02 并明确指定架构 x86_64。

执行定义为“intersectionsSql”的 Postgres 查询时出现以下运行时错误(请参阅此处的评论 RUNTIME ERROR):

我尝试过 Integer、Int64 和 Int,结果都相同,这是违反直觉的,因为根据 PostgreSQL-simple 实例文档,这些 Haskell 类型都应该与 _int8 兼容:

https://hackage.haskell.org/package/postgresql-simple-0.5.0.0/candidate/docs/Database-PostgreSQL-Simple-FromField.html

SQL 查询应该返回单行 postgres bigint[],我已经通过 PGAdmin 确认了这一点。

有任何想法吗?

还有任何关于我如何编写代码的评论 - 自上次我与 GHC 合作以来已经有十多年了,时代已经改变。

感谢您的考虑。

迈克·托马斯

0 投票
1 回答
923 浏览

haskell - 带有仆人的数据库支持的 REST API?

我在设置一个简单的概念证明服务 API 时遇到了问题。这是我的用户数据类型和我的 API 类型:

处理程序方法使用 postgresql-simple,如下所示:

已经省略了连接数据库和路由方法等样板代码。问题是,如果我发出 POST 请求,我想做的是创建一个新用户,所以我会提供 JSON:

但是然后我的程序在运行时失败了

这是有道理的,因为 API 指定了一个具有 id 字段的用户。但我不想在请求中传递一个虚假的 id(因为它们是由 postgres 顺序分配的),因为那很恶心。我也无法将 id 字段移出 User 数据类型,因为在向不同的端点发出 GET 请求时,由于模型数据库不匹配而导致 postgres-simple 失败(这很明显:通过 id 获取。不包括在上面)。我在这里做什么?编写自定义 FromJson 实例?我已经尝试将 Data.Aeson.TH 选项标志 omitNothingFields 设置为 True 并将 id 字段设置为 Maybe Int,但这也不起作用。任何意见,将不胜感激。

0 投票
2 回答
427 浏览

haskell - 使用 postgresql-simple 创建流式管道源

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

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

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

任何有关如何实现这一点的指示将不胜感激!谢谢!

0 投票
2 回答
1389 浏览

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

我是haskell的新手,真的很难过。但这扩展了我的想法,所以我们开始吧。我正在尝试运行一个非常简单的 Web 服务器来查询 Postgres DB 并应将结果作为 JSON 返回。

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

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

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

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

然后我尝试使用 lambda 函数传递信封 ID,为此我还需要将 PostgreSQL-Simple 更改query_query

我得到的错误说:

即使没有 lambda 函数,我也无法仅返回查询中的第一项。

完整的源代码可以在bitbucket上找到

我希望有人有时间在这里帮助我。感谢您的阅读。

0 投票
1 回答
278 浏览

postgresql - haskell postgresql-simple,如何从更广泛的查询中访问特定数据

如何访问查询 [VarcharIntDate] 中的数据?

我知道如何打印它,但我不能用它做很多其他事情,因为我不明白如何处理'IO [VarcharIntDate]'

但我想做的是从返回的 [VarcharIntDate] 的第 n 行访问“d”或从所有行访问“i”,这样我就可以开始从查询中提取数据并开始使用它。