问题标签 [sqlx]

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 投票
3 回答
7823 浏览

sql - 使用 sqlx 在 Postgres 中取回新插入的行

我使用https://github.com/jmoiron/sqlx对 Postgres 进行查询。

插入新行时是否可以取回整行数据?

这是我运行的查询:

或者我应该只使用我现有的user结构作为数据库中新条目的真实来源?

0 投票
1 回答
3813 浏览

postgresql - 如何在 golang 中使用遮罩/迁移?

我一直在尝试使用mattes/migrate包,但我似乎无法让它真正做任何事情。数据库在 postgres 上运行,我通过sqlx与之交互。

我已经阅读了 github 上的自述文件,并应用了以下代码:

我的架构是这样启动的:

它运行没有错误,但这就是它目前正在做的一切。它不应该跟踪我的模式或其他东西吗?我以前使用gorm作为我的 ORM,我只需要在模式上运行 autoMigrate(),它会在我更改模式时自动创建和应用迁移。我希望 mattes/migrate 具有相同的功能,但我似乎找不到显示如何使用它的示例或教程。

我该怎么做?

0 投票
1 回答
547 浏览

sql - 在 sqlx 或 database/sql (golang) 中立即开始?

如何在 jmoiron/sqlx 或 database/sql(对于 golang)中启动 sqlite BEGIN IMMEDIATE 事务?根据文档,这些begin方法允许您控制隔离方法(例如,https://golang.org/pkg/database/sql/#DB.Begin)。但是,如果我没记错的话,隔离方法并不是我要找的。根据 sqlite 文档,事务默认为DEFERRED,这会导致我的用例出现死锁和竞争条件,所以我真的需要确保它是立即开始的。

0 投票
1 回答
1009 浏览

go - 优化 Go 中的 SQL 数据访问

我正在尝试将我一直在研究的 API 实现从 GORM ORM 库切换到 SQLx,以提高数据访问效率。特别是,我试图摆脱一些 SELECT N+1 问题。所以,我有一个网站有帖子的一对多关系。我正在实现的 API 将站点列表作为 JSON 对象返回,并且每个站点都有一个嵌套posts列表。结构看起来有点像这样

这在 GORM 中很容易实现,但是当我查看 GORM 正在运行的 SQL 来实现它时,我意识到它正在对列表中的每个站点的帖子执行 SELECT。所以我试图使用这样的 SQL 来避免 N+1 问题。

这让我在一个查询中获得了我需要的所有数据。但是我有点坚持如何将所有这些扫描到站点结构列表中。在 GORM 中,我定义了以下结构(为简洁起见)

然后我会做类似的事情

所以问题是,我如何使用 SQLx 将我的新 SQL 扫描到一个结构切片中,从而产生与 GORM 产生的类似数据结构?我不介意编写自己的扫描仪,但我仍然希望能够使用 SQLxSelect()Get()方法。我需要做什么才能完成这项工作?

编辑:似乎如果我执行我在这个问题中提出的确切代码,GORM 实际上并没有进行 N+1 选择,它运行两个查询,一个简单的 SELECT 用于站点,一个 SELECT ... WHERE ... IN 。 .. 对于帖子,然后整理两个结果集。不过,我仍然想知道如何在 SQLx 中执行此操作。

0 投票
1 回答
1832 浏览

go - Golang 事务退出处理

我有一个大约 100 req/sec 的系统。有时它直到我重新启动我的 go 程序才会响应。我发现这是因为我打开了事务并且在某些地方没有关闭它。这就是为什么所有连接都被打开的事务占用而我无法打开另一个连接之后我添加了这段代码

这使我的程序可以不间断地运行一个月。可就在刚才,又发生了。大概是因为这个问题。有没有更好的方法来关闭交易?或者,如果交易打开 1 分钟,它可能是一种关闭交易的方法?

0 投票
2 回答
307 浏览

mysql - 从 sphinx db 到有点复杂的 golang 结构的最佳实践

我正在尝试通过 MySQL 将 sphinx 查询转换为 golang 结构,并且遇到了困难。看起来这应该是一种常见的问题,但到目前为止,我一直坚持将其转换为地图或自己解析输出。具体来说,我在 sphinx 中有一个类似于 {Source: {ID:string, subId:string, Campaigns:[]{CampaignID:string, Status:string}}} 的模式

我试过使用简单的 rows.scan 但这并不能帮助我解析重复字段,我只是将它作为未解析的字符串获取。在 sphinx 中,键不在引号中,因此 JSON.unmarshal 似乎根本没有帮助。并使用 sqlx,我尝试构建以下结构

并将状态结构传递给 Row.ScanStruct() 并且我返回“缺少目标名称源”错误,或者如果我在状态中命名源成员,我得到“sql:列索引 0 上的扫描错误:不支持的扫描,将 driver.Value 类型 []uint8 存储到类型 *v1.Source" 中。完全披露,狮身人面像模式有一些其他列作为 StatusByCampaign 的对等列,它们紧随其后,在我的用例中我不关心它们。

这似乎是以前必须遇到的事情,但除了编写自己的解析器之外,我似乎找不到解决方案,我不愿意这样做。

0 投票
2 回答
1036 浏览

go - 使用 sqlx 嵌入结构不从数据库返回值

我有一个时间字段可能为零的结构:

我想把它保存到数据库中,sqlx所以我想我需要按照这里pq.NullTime的建议使用。

而不是更新Order对象(我不想将数据库代码泄漏到模型层),我想我可以将 Order 嵌入 aPgOrder并更改PickupTime类型:

问题是,当我简单地更新Order数据库中的一个,然后转身获取该订单时,返回PickupTime的是空的。

如果我在更新和检索之间放置一个断点,我可以检查数据库并看到一个值被保存为2017-04-20 12:05:37-04. 所以问题一定出在检索部分。如果我从文档中理解正确,则 sqlx 应该能够处理嵌入式结构。

0 投票
3 回答
8646 浏览

go - 通过指针的结构标记的Sqlx“缺少目标名称”

我有一个这样的模型:

当我尝试使用这样的查询为组执行 sqlx.Select 时:

我明白了

*main.Groups 中缺少目的地名称 course_name

错误。

这段代码有什么问题?

0 投票
1 回答
1135 浏览

mysql - 如何使用 sqlx 共享 mysql 连接?

我想共享 sqlx 连接以用于其他功能。这是我想出的:

然后在函数中我想进行如下查询:

但是我感到恐慌:

这里有什么问题?我该如何解决?

0 投票
0 回答
828 浏览

mysql - 如何使用sqlx检查一行是否存在?

我希望这个函数返回包含email在数据库中找到的行的真值。这是代码

但是,false即使数据库中有这样的电子邮件,它也总是会返回,所以很明显查询不能胜任这项工作。我怎样才能解决这个问题?