用Python完成的查询在Golang中完成时不起作用。(MySQL)

2024-10-01 11:29:19 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,我要做的是重构一些用Python编写的旧代码,在Go中生成一个新的API。 Python中的查询如下所示:

query = 'UPDATE info 'SET jsonField = JSON_REPLACE(jsonField, "$.content", null, "$.payload", null), 'field2 = %s ' WHERE Id = %s AND Id2 = %s AND Id3 = %s'

因此,为了在Golang工作,我将其更改为: UPDATE info SET jsonField = JSON_REPLACE(jsonField, "$.content", null, "$.payload", null), field2 = ? WHERE Id = ? AND Id2 = ? AND Id3 = ?

执行查询的代码:

stmt, err = db.Prepare(query)
if err != nil {
    return opInfo, err
}
defer stmt.Close()
result, err := stmt.Exec(field2, Id, Id2, Id3)
if err != nil {
    return opInfo, err
}
fmt.Printf("\n query being executed: %s", query)
opInfo, err = result.RowsAffected()
fmt.Printf("\n modified Rows: %v", opInfo)
if err != nil {
    return opInfo, err
}

那么,问题出在哪里?在Go中,opInfo值始终为0,没有任何更改,但没有错误。 我已经检查了我传递的值是否与数据库中的值不同,标识符是否正确,“field2”这是一个带有特殊字符的长字符串,但这就是为什么我像blob一样发送它

即使这是问题所在,我也尝试单独修改数据库中的json,并更新“field2”以检查其中一个是否导致了问题。两次尝试都失败了

我是否缺少Go标准库中的数据库驱动程序

此外,没有解决方法,我不会从MySQL更改为无SQL数据库

在Python中,我使用了:

cursor.execute(query, (field2, Id,Id2, Id3))

这件事耽搁了几个星期,请帮忙


Tags: andid数据库goifquerynullerr
1条回答
网友
1楼 · 发布于 2024-10-01 11:29:19

试试这个:

query := fmt.Sprintf("UPDATE info SET jsonField = JSON_REPLACE(jsonField, %s, null, %s, null), field2 = ? WHERE Id = ? AND Id2 = ? AND Id3 = ?", content, payload)

相关问题 更多 >