괴발개발 성장기

Study/Go 언어

[golang] go에서 DB연결하는 방법

지니유 2022. 5. 10. 21:32
반응형

# 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

 

데이터베이스 처리하는 부분 공부하기 · Issue #13 · YooGenie/study-service

 

github.com

 

# 참고

https://pkg.go.dev/database/sql#DB.SetMaxOpenConns

 

sql package - database/sql - pkg.go.dev

Package sql provides a generic interface around SQL (or SQL-like) databases. The sql package must be used in conjunction with a database driver. See https://golang.org/s/sqldrivers for a list of drivers. Drivers that do not support context cancellation wil

pkg.go.dev

 

 

 

 

 

 

 

 

 

 

반응형