有没有一种方法可以计算对sql.Exec的每次调用?

时间:2019-02-07 08:39:01

标签: go

我正在为go应用编写一个后端。我想为每个请求记录执行了多少个数据库查询。

为此,我想每次调用sql.Exec时都增加一个整数。如何在不手动将其添加到使用sql.Exec的每个位置的情况下执行此操作?还是有更好的方法来做到这一点?

2 个答案:

答案 0 :(得分:2)

  

如何执行此操作而不将其手动添加到我使用sql.Exec的每个位置?

包装您的SQL访问对象。例如:

type MyDB struct {
    *sql.DB
    count int
}

func (db *MyDB) Exec(query string, args ...interface{}) (sql.Result,error) {
    db.count++
    return db.DB.Exec(query, args...)
}

然后在任何地方使用包装类型。 (可能)这意味着要更新大量代码以使用接口,而不是*sql.DB变量。

唯一的选择是围绕SQL驱动程序(而不是客户端)编写包装器。但是您将使用相同的方法。此方法需要对Go的sql内部有更多了解。

答案 1 :(得分:-5)

  

如何执行此操作而不将其手动添加到我使用sql.Exec的每个位置?

一点也不。 Go没有提供任何魔术。如果您想完成任务,则必须执行。