问题标签 [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.
postgresql - 与 Database.PostgreSQL.Simple 的 count(*) 类型兼容性错误?
错误是
看起来count(*)
查询中返回的任何值都必须转换为Integer
而不是Int
. 如果我将这些特定变量更改为整数类型,则查询将起作用。
但是这个错误并没有在另一台具有相同代码的机器上引发。第一台机器是 32 位的,另一台是 64 位的。这是我能辨别的唯一区别。
有没有人对正在发生的事情有任何见解?
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 = "不匹配的列数在目标类型中转换和编号"}
postgresql - Haskell PostgreSQL 简单 FromField
我在为自定义枚举数据类型定义 FromField 实例时遇到问题:
为了Role
在我的数据库中表示,我最有可能使用整数 0 和 1(以后可以添加更多角色)smallint
。
Review
在我的其他数据类型中使用,它代表我的 db 表中的一行:
这是我的 ReviewAssignment 的 FromRow 实例:
现在我只是缺少以下我不明白如何实现的内容:
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
以及可能的其他实例可能是矫枉过正的。那么有没有其他的解决办法呢?
postgresql - 函数上的 PostgreSQL-simple `execute` 失败,“执行导致 Col 1 列结果”
我想从 Haskell 执行一个 Postgres 函数,它更新 3 行,但用RETURNS VOID
. 我按如下方式运行该函数:
但这会导致:
查询不返回结果:
如何从 Haskell 执行这个 Postgresql 函数?
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 兼容:
SQL 查询应该返回单行 postgres bigint[],我已经通过 PGAdmin 确认了这一点。
有任何想法吗?
还有任何关于我如何编写代码的评论 - 自上次我与 GHC 合作以来已经有十多年了,时代已经改变。
感谢您的考虑。
迈克·托马斯
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,但这也不起作用。任何意见,将不胜感激。
haskell - 使用 postgresql-simple 创建流式管道源
postgresql-simple
提供流式查询的功能,例如
我想创建一个充分利用流媒体的管道源。
不幸的是,因为IO
出现在 中的逆变位置(我认为?)fold
,我真的很挣扎这些类型。以下类型检查,但在产生值之前折叠整个流。
任何有关如何实现这一点的指示将不胜感激!谢谢!
json - postgres-simple - 没有因使用“查询”而产生的(ToRow Int)实例
我是haskell的新手,真的很难过。但这扩展了我的想法,所以我们开始吧。我正在尝试运行一个非常简单的 Web 服务器来查询 Postgres DB 并应将结果作为 JSON 返回。
查询非常简单:“Select id,data from MYTABLE where id = 1”
但是 haskell 的类型系统现在正在杀死我,我的行为的最终类型不匹配。我正在使用Spock和PostgreSQL-Simple作为组合。
大多数教程对于我想做的事情要么简单,要么困难。我介于两者之间,错过了很多对 Haskell 的理解,我以前的很多问题我已经通过简单的复制和粘贴解决了,并且得到了一个简单的版本。
但是,一旦我尝试传递路由变量,我就失败了。这是我的工作版本。我的数据库表在这里称为“信封”,重要的调用是它说的get "json"
:
然后我尝试使用 lambda 函数传递信封 ID,为此我还需要将 PostgreSQL-Simple 更改query_
为query
:
我得到的错误说:
即使没有 lambda 函数,我也无法仅返回查询中的第一项。
完整的源代码可以在bitbucket上找到
我希望有人有时间在这里帮助我。感谢您的阅读。
postgresql - haskell postgresql-simple,如何从更广泛的查询中访问特定数据
如何访问查询 [VarcharIntDate] 中的数据?
我知道如何打印它,但我不能用它做很多其他事情,因为我不明白如何处理'IO [VarcharIntDate]'
但我想做的是从返回的 [VarcharIntDate] 的第 n 行访问“d”或从所有行访问“i”,这样我就可以开始从查询中提取数据并开始使用它。