🐾 [golang] go에서 DB연결하는 방법
DB 생성하는 함수
var xormDb *xorm.Engine
func ConfigureDatabase() *xorm.Engine {
var err error
dbConnection := config.Config.Database.ConnectionString
xormDb, err := xorm.NewEngine(Config.Database.Driver, dbConnection) //Create Engine
if err != nil {
panic(fmt.Errorf("Database open error: error: %s \n", err))
} else {
fmt.Println("DB connected: ", Config.Database.Connection) //DB 연결 성공
}
xormDb.SetMaxOpenConns(10) //데이터베이스에 열린 연결의 최대 수가 설정
xormDb.SetMaxIdleConns(5) //idle connection pool 의 최대 연결 수를 설정
xormDb.SetConnMaxLifetime(10 * time.Minute) //연결을 재사용할 수 있는 최대 시간을 설정
xormDb.ShowSQL(config.Config.Database.ShowSql)
//로그 수준이 INFO보다 클 경우 로거에서 SQL 문인지 여부
xormDb.Logger().SetLevel(core.LOG_INFO) //로거 레벨 설정
return xormDb
}
- config.json에 있는 config.Config.Database.ConnectionString안에 값을 가져온다.
- root:@tcp(hostname:포트번호)/study?charset=utf8 으로 값이 들어온다.
config에 Database구조체
Database struct {
Driver string
User string
Connection string
ConnectionString string
}
main.go 추가내용
import (
_ "github.com/go-sql-driver/mysql"
"github.com/go-xorm/xorm"
)
func main() {
xorm := middleware.ConfigureDatabase() //middleware안에 있는 ConfigureDatabase함수 불러오기
xorm.Close() //main이 종료되면 DB 접속을 닫는다.
}
- mysql를 import 하지 않아서 컴파일 에러가 났다 => github.com/go-sql-driver/mysql
GitHub
https://github.com/YooGenie/study-service/issues/13
참고
https://pkg.go.dev/database/sql#DB.SetMaxOpenConns