问题标签 [pgx]

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 投票
1 回答
615 浏览

postgresql - 扫描 Postgres float4 时出错:无法将 5000 分配到 pgtype.Float4

询问:

这是迭代一行的代码。number是 Postgres 中的类型float4。我pgtype.Float4用于扫描。

我收到以下错误:

可能是什么问题?欢迎任何建议。先感谢您。

0 投票
1 回答
240 浏览

arrays - 使用 pgx 使用 JSONBArray 时出现“错误的元素类型”

我正在尝试插入一个具有inventorywith 数据类型的新行jsonb[]

但我收到以下错误:

Postgres 表定义:

可能是什么问题?任何想法都会有所帮助。

0 投票
1 回答
3698 浏览

sql - 使用 jackc/pgx 将空字符串或 null 作为 null 插入 postgres

我使用的外部 json API 处理缺失值的方式不一致。有时 json 值显示为空字符串,有时显示为 null。例如...

Case1: datedecandcurr都是空字符串。

案例2:datedec为空。curr被填充。

这是我用来表示股息的结构:

我遇到的问题是如何将空字符串或 null 作为NULL. 我知道我可以使用omitemptyjson 标签,但是我将如何编写一个函数来处理我不知道会丢失的值?例如,这是我当前使用 jackc/pgx 包在 postgresql 中插入股息的函数:

如果缺少值(例如 datedec 或 curr),则此函数将出错。从这篇文章Golang Insert NULL into sql instead of empty string我看到了如何解决 Case1。但是有没有更通用的方法来处理这两种情况(空字符串或空字符串)?

我一直在查看 database/sql & jackc/pgx 文档,但我还没有找到任何东西。我认为 sql.NullString 有潜力,但我不确定我应该怎么做。

任何建议将不胜感激。谢谢!

0 投票
0 回答
1705 浏览

postgresql - pgx.ErrNoRows 与查询返回的 err 不匹配

pgx 的新人。使用 pgxpool。我有一个简单的查询

即使实际上返回了 No Rows,我也永远不会得到“No Rows”。错误总是“结果集中没有行”,但它从不匹配 pgx.ErrNoRows,因为我知道它们应该是相同的。

在检查类型时,pgx.ErrNoRows = *errors.fundamental 而 err = *xerrors.errorString。

我在做什么或假设磨损?

编辑:

正如下面提到的@mkopriva,问题是goimport自动导入了错误的pgx,它需要是“github.com/jackc/pgx/v4”

0 投票
1 回答
399 浏览

database - 处理数据库查询中可能的空值的正确/惯用方法是什么?

我正在处理 Go 中的多对多关系。为此,我使用的是pgxPostgreSQL 驱动程序。

为了使这个问题尽可能简单,让我们假设一个简单的博客文章可以有一些标签:

为了检索帖子及其标签,我使用了类似于以下查询的内容(为了在 Go 中轻松查询):

此查询可能会返回一些行,其中tag_idtag_name为空。我目前处理此问题的方式如下(为简单起见,删除了错误处理):

如您所见,我正在使用pgtype来处理潜在的空值。我应该提到这个解决方案有效。但是,我有两个问题:

  1. 这个解决方案看起来相当笨重和凌乱;阅读起来很复杂(至少对我而言)。有没有更好、更惯用的 Go 方式来做到这一点?
  2. 调用时,tagID.Int.Uint64()我总是0以标签 ID 的形式返回,这是不正确的。我在这里做错了吗?(我使用pgtype.Numeric是因为数据库中的标签 ID 是 pgsql bigint)。
0 投票
1 回答
3484 浏览

postgresql - 使用 golang pgxpool 的 Postgres 表批量更新未反映在数据库中

我需要使用新转换的 ID(作为“记录”传入)更新一个相当大的 psql 表。我在下面创建了这个函数来利用 pgxpool 的连接池和请求批处理,如果我使用不同的客户端应用这些事务,它们会更新数据库,如果我查看打印出来的结果,它们表明每次有 1 行受到影响,但是当我从数据库中检索这些行,它们保持不变。我是否以某种方式错误地使用了批处理?

打印出:

0 投票
1 回答
390 浏览

postgresql - 如何将字符串转换为 sqlx.types.JSONText?

我正在使用gqlgen,sqlxpgx. 尝试使用自定义标量在 postgres 数据库中存储为 jonb 类型。

的期望结果a *Attributes应该是{"target": "localhost"},在 postgres 中存储为 jsonb:

我做错了什么?


编辑:添加样本突变。

这是样本突变:


编辑:添加 sqlx 查询。

要插入的查询:

0 投票
2 回答
2383 浏览

go - 如何使用 pgx 记录查询?

如果我使用 pgx 池,我找不到如何记录 sql 查询的文档。例如,我创建了这样的池:

请告诉我如何记录我的查询?

0 投票
1 回答
235 浏览

go - 使用 golang 批量查询创建 TimescaleDB 超表

我的 golang 服务需要在 Timescale DB 中动态创建一个超表。我使用pgx驱动程序。我的代码如下(我删除了错误处理):

Exec()返回错误

我在查询中添加了模式名称(如您所见),但这无济于事。如果我将它分成三个查询,一切正常

我想问题在于 timescale db 需要创建一个普通表并提交以创建一个超表。是对的还是有什么问题?有没有人遇到过这个问题,你是如何解决的?

0 投票
0 回答
230 浏览

sql - SQL 表名作为要查询的变量

我正在使用pgx库在 Go 中填充 Postgres 数据库。

遵循例如这里的教程和这个问题,我像这样构建我的查询:

  • 问题:我也想将表名作为变量提供给查询,例如将tblinsert更改为INSERT into $1 (id, body) VALUES ($2, $3)

  • 问题:上面的代码出错并在我运行时返回“$1”或附近的语法错误(SQLSTATE 42601)”:

我不完全理解为什么错误消息甚至引用了$占位符 - 我希望查询在这里进行字符串替换,就像 VALUES 一样。

我在这里这里的纯 SQL 中发现了类似的问题,所以不确定这是否可能。.

任何关于我哪里出错的指针,或者我可以在哪里了解更多关于$x语法的指针(我得到了上面的工作Sprintf,但这似乎不鼓励)非常感谢 - 我对 SQL 和 Go 都很陌生。