Answer the question
In order to leave comments, you need to log in
How to make a connection to the MySQL DBMS in a global variable?
How to make a connection to the "MySQL" DBMS in a global variable? In order not to connect to the database in each route / function, but simply to use one connection object.
Clearly, it's like this:
db, err := sql.Open("mysql", "login:[email protected]/nameDB") // Connected to the database.
if err != nil {
// _error_handler_
return
}
defer db.Close() // Deferred connection-db close.
Actually, the question is more about closing, it turns out ...
Answer the question
In order to leave comments, you need to log in
You can do this:
in a separate package, let it be database do the following:
package database
import (
"fmt"
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/sqlite"
"log"
"os"
)
var db *gorm.DB // объявляем переменную для работы с БД
func init() {
// при обращении к пакету database будет совершена попытка подключения к БД
conn, err := gorm.Open("sqlite3", "database.db")
if err != nil {
log.Println(fmt.Sprintf("database error: %v", err))
} else {
log.Println("database connected")
}
// записываем результат соединения в ранее объявленную переменную
db = conn
}
// Создаем глобальную функцию с результатом соединения, чтоб можно было работать с БД из любого пакета
func Connector() *gorm.DB {
return db
}
package main
import (
"go-tmp/project/database"
"log"
)
func main() {
// объявляем анонимную функцию, которая закроет соединения с БД при завершении работы приложения
defer func() {
if err := database.Connector().Close(); err != nil {
log.Println(err)
}
}()
}
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question