什么时候在golang Web服务器上准备postgresql语句?
发布时间:2020-12-16 09:28:06 所属栏目:大数据 来源:网络整理
导读:我有一个连接到 postgresql数据库的Web服务器.据我所知,postgresql驱动程序在内部管理连接池,因此我将数据库连接作为全局变量. 我正在使用准备好的语句,我不知道在服务器启动之前在我的main函数中提前准备它们是不是一个好主意,或者在我的请求处理程序中进行
我有一个连接到
postgresql数据库的Web服务器.据我所知,postgresql驱动程序在内部管理连接池,因此我将数据库连接作为全局变量.
我正在使用准备好的语句,我不知道在服务器启动之前在我的main函数中提前准备它们是不是一个好主意,或者在我的请求处理程序中进行(如下所示).我是golang的新手.我认为使语句全局化更有效,但我不确定.请帮忙. var db *sql.DB func main() { router = pat.New() router.Get("/",handler) db,e := sql.Open("postgres","...") ... http.ListenAndServe("127.0.0.1",router) } func handler(w http.ResponseWriter,r *http.Request) { s,e := db.Prepare("select * from mytable where field=$1") r,e := s.Exec(123) ... } 解决方法
这一切都取决于您的用例.根据经验,我会说你应该在运行服务器之前准备好你的语句,原因有很多:
>如果语句未正确准备,则无法启动.如果您即时准备它们,失败的语句可能会在启动后很长时间内使整个程序无效. 至于你的数据库句柄,你应该使语句全局化,以便随时使用它们而不必传递指针.如果您发现自己处理许多语句,例如超过10-15(任意数字),您可能会发现将所有与数据库相关的内容(数据库初始化,查询等)放入主包的子包中会更容易. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |