问题标签 [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.
sql - 使用 sqlx 在 Postgres 中取回新插入的行
我使用https://github.com/jmoiron/sqlx对 Postgres 进行查询。
插入新行时是否可以取回整行数据?
这是我运行的查询:
或者我应该只使用我现有的user
结构作为数据库中新条目的真实来源?
postgresql - 如何在 golang 中使用遮罩/迁移?
我一直在尝试使用mattes/migrate包,但我似乎无法让它真正做任何事情。数据库在 postgres 上运行,我通过sqlx与之交互。
我已经阅读了 github 上的自述文件,并应用了以下代码:
我的架构是这样启动的:
它运行没有错误,但这就是它目前正在做的一切。它不应该跟踪我的模式或其他东西吗?我以前使用gorm作为我的 ORM,我只需要在模式上运行 autoMigrate(),它会在我更改模式时自动创建和应用迁移。我希望 mattes/migrate 具有相同的功能,但我似乎找不到显示如何使用它的示例或教程。
我该怎么做?
sql - 在 sqlx 或 database/sql (golang) 中立即开始?
如何在 jmoiron/sqlx 或 database/sql(对于 golang)中启动 sqlite BEGIN IMMEDIATE 事务?根据文档,这些begin
方法允许您控制隔离方法(例如,https://golang.org/pkg/database/sql/#DB.Begin)。但是,如果我没记错的话,隔离方法并不是我要找的。根据 sqlite 文档,事务默认为DEFERRED,这会导致我的用例出现死锁和竞争条件,所以我真的需要确保它是立即开始的。
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 中执行此操作。
go - Golang 事务退出处理
我有一个大约 100 req/sec 的系统。有时它直到我重新启动我的 go 程序才会响应。我发现这是因为我打开了事务并且在某些地方没有关闭它。这就是为什么所有连接都被打开的事务占用而我无法打开另一个连接之后我添加了这段代码
这使我的程序可以不间断地运行一个月。可就在刚才,又发生了。大概是因为这个问题。有没有更好的方法来关闭交易?或者,如果交易打开 1 分钟,它可能是一种关闭交易的方法?
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 的对等列,它们紧随其后,在我的用例中我不关心它们。
这似乎是以前必须遇到的事情,但除了编写自己的解析器之外,我似乎找不到解决方案,我不愿意这样做。
go - 通过指针的结构标记的Sqlx“缺少目标名称”
我有一个这样的模型:
当我尝试使用这样的查询为组执行 sqlx.Select 时:
我明白了
*main.Groups 中缺少目的地名称 course_name
错误。
这段代码有什么问题?
mysql - 如何使用 sqlx 共享 mysql 连接?
我想共享 sqlx 连接以用于其他功能。这是我想出的:
然后在函数中我想进行如下查询:
但是我感到恐慌:
这里有什么问题?我该如何解决?
mysql - 如何使用sqlx检查一行是否存在?
我希望这个函数返回包含email
在数据库中找到的行的真值。这是代码
但是,false
即使数据库中有这样的电子邮件,它也总是会返回,所以很明显查询不能胜任这项工作。我怎样才能解决这个问题?