Golang
Golang mysql 사용/연동 하기
시바도지
2023. 8. 8. 10:09
반응형
Golang에서 mysql과 연동하기 위해 "database/sql"과 "github.com/go-sql-driver/mysql" 패키지를 import 해야한다.
"database/sql"은 golang의 데이터베이스 관련 인터페이스를 제공하고, DB연결, 쿼리 실행, 트랜잭션 등을 처리할 수 있다.
"github.com/go-sql-driver/mysql"은 mysql DB 드라이버를 구현한 패키지다.
사용 방법
터미널에서 다음의 명령어를 사용하여 패키지를 다운로드 한다. (이미 설치가 되어 있다면 생략)
go get github.com/go-sql-driver/mysql
예제 코드)
DB가 이미 생성되어 있다는 가정하에 진행
package main
import (
"database/sql"
"fmt"
"log" // logging을 위해 사용, 필수는 아니지만 사용 권장
_ "github.com/go-sql-driver/mysql" // 개발자가 드라이버 패키지를 직접 사용하지 않도록 _(언더바)를 alias를 준다.
)
func main() {
// MySQL 데이터베이스 연결 정보
db, err := sql.Open("mysql", "root:1234@tcp(localhost:3306)/schooldb") // DB 정보) id: root, pw: 1234, db name: schooldb
if err != nil {
log.Fatal(err)
}
defer db.Close()
// 데이터베이스 연결 확인
err = db.Ping()
if err != nil {
log.Fatal(err)
}
fmt.Println("Connected to MySQL database!")
// 쿼리 실행
rows, err := db.Query("SELECT id, name FROM student") // 학생 테이블에서 id, name을 조회
if err != nil {
log.Fatal(err)
}
defer rows.Close()
// 쿼리 결과 읽기
for rows.Next() {
var id int
var name string
err := rows.Scan(&id, &name)
if err != nil {
log.Fatal(err)
}
fmt.Printf("ID: %d, Name: %s\n", id, name)
}
}
위의 예제는 복수개의 row를 반환할 경우의 쿼리 예제이다.
만약 하나의 row만을 반환할 경우 다음의 코드와 같다.
package main
import (
"database/sql"
"fmt"
"log"
_ "github.com/go-sql-driver/mysql"
)
func main() {
// MySQL 데이터베이스 연결 정보
db, err := sql.Open("mysql", "root:1234@tcp(localhost:3306)/schooldb")
if err != nil {
log.Fatal(err)
}
defer db.Close()
// 데이터베이스 연결 확인
err = db.Ping()
if err != nil {
log.Fatal(err)
}
fmt.Println("Connected to MySQL database!")
// 쿼리 실행
var name string
row, err := db.QueryRow("SELECT id, name FROM student WHERE id = 1").Scan(&name) // id가 1인 학생을 조회
if err != nil {
log.Fatal(err)
}
defer rows.Close()
fmt.Println(name)
}
반응형