问题标签 [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 投票
0 回答
193 浏览

haskell - 如何使用 hspec 开始和回滚事务?

我正在尝试使用hspec涉及 postgres 事务回滚以及postgresql-simple'sbeginrollback命令来编写测试。

但是,应用postgresql-simple's beginand rollbackcommands 似乎会导致我的 'insert' 命令无法运行并且根本不会影响我的数据库。

这是相关的代码。

我运行它ghci,在“在这里设置断点”行设置断点;应该在条目之后和回滚之前插入。在此断点处暂停时,我查询数据库以查看是否已插入条目,并看到此代码似乎没有将条目插入数据库

但是,当我删除PGS.begin connandPGS.rollback conn行时,代码确实将条目插入到数据库中。

为什么这段代码没有在 'begin' 和 'rollback' 行中插入一个条目到数据库中?

如何编写开始和回滚的 hspec 测试,以便我的测试不会影响数据库中的值,并且实际运行命令?

0 投票
0 回答
181 浏览

haskell - PostgreSQL.Simple 的用户错误(do 表达式中的模式匹配失败)

我的架构:

我的代码:

我的错误:

我的问题:

  • 如何修复此错误?
  • 如何获得更多信息的错误消息?

更新:我连接到错误的数据库,因此我对结果集的假设是错误的。它包含零行而不是一行,因此它试图[]匹配[Only i]. 我通过在 ghci 中执行查询发现了它:

0 投票
1 回答
794 浏览

haskell - “toRow”不是“ToRow”类的(可见)方法

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

错误是:

并且:

我查看了一些示例项目(其中包括),但我不明白我做错了什么:(

0 投票
1 回答
419 浏览

haskell - postgresql-simple 中的嵌套数据类型

考虑以下可以找到一组坐标的代码:

然后我想为命名的坐标集定义数据类型:

不幸的是,我不知道如何用查询组合数据类型(在我的例子PathCoord)。这样的事情是否可能(以及如何?)。

0 投票
1 回答
142 浏览

haskell - 如何将类型序列化为指定的数据库列

我在 haskell 应用程序中使用 postgresql-simple,并且我希望能够将数据类型序列化为我的数据库中没有数据类型中使用的记录字段的 1 对 1 映射的行,因为我是在其他数据类型中使用它们。(我对 Haskell 很陌生,但我认为这涉及使用 Identifier 数据构造函数)。

示例我有一个数据库表用户,其中包含以下列:user_id、email、name、password、address、phone_number

现在我有一个具有以下格式的类型:

而且我可以为这种类型实现一个通用的 ToRow 没有问题,因为记录字段与列名相同,但是我有另一种类型,我想为其生成一个 ToRow 实例:

我将如何实现这种类型的 ToRow 实例或更一般地我如何编写一个 ToRow 实例,如下面的伪代码

希望它具有类似于 Aeson 的功能,您可以在其中轻松编写如下内容:

但我还没有找到这个。

0 投票
0 回答
150 浏览

sql - 使用 haskell 构建动态 sql 查询的建议方法

我想在我的应用程序中将 postgresql-simple 用于我的数据库访问层,我想知道动态构建我的 sql 查询的最佳方法是什么。我想要完成的一个简单示例如下:

用户有一系列过滤器可以应用于他们正在搜索的内容:

  • 宠物数量
  • 宠物名称
  • 宠物创建的时间
  • ETC

我应该如何处理组合过滤器,这样我就不会让自己容易受到攻击。我的第一直觉是我只需要担心字符串/文本数据,因为我可以检查输入的数字实际上是一个数字,并且提供的日期实际上是一个日期。使用以下格式:

我不确定这是否只是一种不好的方法,或者仅使用现有库是否会更好,或者在我没有考虑的预制语句中是否有更好的方法。

0 投票
0 回答
104 浏览

haskell - 如何根据路由参数使用haskell动态组装SQL查询

我有一个 scotty web 应用程序,我正在尝试实现一个动态搜索界面,并一直在我应该如何实现它上碰壁。基本前提如下:

给定 URL 参数列表:let params = [Param]

其中参数:type Param = (Text, Text)

我希望能够

假设我的数据库中有一个表,其中:

我的基本 SQL 查询可能如下所示:

在接收 url 参数的情况下,我希望能够将它们应用于 WHERE 子句、ORDER BY 子句等。

转换以下网址的最佳策略是什么:

这将导致以下参数列表:

let params = [("order_by_max","user_id"), ("first_name","emg184"), ("last_name","stackoverflow"), ("limit", "20")]

我将如何生成以下查询:

(我真的很喜欢查询构建器 knexjs 的工作方式,它允许生成临时查询片段并将其作为高阶函数应用于某些基本查询http://knexjs.org/

我想知道这可能是什么策略或实施,因为我没有成功构建任何我认为非常适合的东西。

0 投票
1 回答
255 浏览

postgresql - 如何使用 postgresql-simple 检索 JSON jsonb 值?

jsonExample在 postgresql 数据库中有一个列 (),类型为jsonb.

这给出了以下错误:

我怎样才能让它返回一个 JSON 对象 - 使用 aeson 或其他东西?

0 投票
1 回答
90 浏览

haskell - 由于`CREATE DATABASE`的参数化值周围的单引号引起的SqlError

我正在使用“postgresql-simple”库并使用以下内容遇到 SqlError:

导致错误:

数据库日志为:

为什么要在值周围添加单引号?

这可能是由于 postgresql-simple 没有使用准备好的语句吗?

0 投票
0 回答
40 浏览

haskell - 如何在不重新实现 Haskell 中所有可能的 SqlField 的情况下创建 SqlField 的异构映射

我想使用该postgresql-simple库来构造 SqlValues 的 Map 或 HashMap。我知道这样做的一种方法是将所有 SqlValue 重新定义为一个通用类型ala

但是我想知道是否有一种更有效的方法可以做到这一点,我可以创建一个映射,允许它的值是实现FromField类的任何类型。

是否有可能至少通过使用TypeFamilies或类似的方法来减少与之相关的开销,我可以采取使该类型的每个实例也需要一个FromField

最终目标是让 postgresql-simple 产生以下内容: