我正在为go应用编写一个后端。我想为每个请求记录执行了多少个数据库查询。
为此,我想每次调用sql.Exec时都增加一个整数。如何在不手动将其添加到使用sql.Exec的每个位置的情况下执行此操作?还是有更好的方法来做到这一点?
答案 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没有提供任何魔术。如果您想完成任务,则必须执行。