본문 바로가기

Golang

Golang으로 postgreSQL 연동

728x90
728x90

이 포스트에서는 윈도우 OS 환경에서 postgreSQL을 설치하고 go로 테이블에 레코드를 추가하는 간단한 웹서버를 구현한다.

 

PostgreSQL 설치

https://www.postgresql.org/download/

 

PostgreSQL: Downloads

 

www.postgresql.org

 

위 링크를 따라 들어가서 본인 환경에 맞는 버전을 찾아 설치해주자. GUI로 편하게 보려면 추가 도구에 있는 pgadmin을 같이 설치해주는 게 좋다.

DB와 테이블 생성

pgadmin을 실행하자.

 

 

기본 설정으로 설치했다면 PostgreSQL {버전} 이름의 서버가 하나 보일 것이다. 처음 설치한 상태에서는 코끼리 모양이 아니라 X 모양의 아이콘이 있을건데 로그인을 해야 한다는 뜻이므로 로그인을 해주자.

 

Databases에 우클릭을 하면 db를 만들 수 있다. log는 내가 사전에 만들었던 db다.

 

 

 

 

잘 모르거나 추가적인 설정이 필요 없으면 General 탭에서 db 이름만 지어주고 Save 버튼을 누르면 생성된다.

 

 

db가 생성되었고 테이블을 추가해보자. Schemas > Tables 메뉴에서 우클릭을 하면 테이블을 생성할 수 있다.

 

 

 

 

테이블 이름을 정해주자.

 

 

Columns에서 컬럼을 정의해줄 수 있다. 적당한 데이터 타입을 지정해준 후 Save를 누르면 테이블을 생성할 수 있다.

 

웹서버 개발

golang으로 postgresql를 연동하기 위해서는 라이브러리를 설치해줘야 한다. 그러기 위해서는 Go Modules로 모듈을 사용해야 한다.

 

웹서버를 구현하려는 루트 폴더에 다음 명령어를 입력하여 라이브러리를 설치한다.

 

go mod init 프로젝트 이름
go get github.com/lib/pq@v1.10.0

 

 

설치를 완료했으면 main.go 파일을 만들고 다음과 같이 코드를 작성해주자. db와 관련된 정보를 본인의 것으로 설정하는 것을 잊지 말자.

 

package main

import (
	"database/sql"
	"fmt"
	"net/http"
	_ "github.com/lib/pq"
)

const (
	host   = "localhost"
	port   = 5432
	user   = "postgres"
	pw     = "yourpassword"
	dbname = "log"
)

func main() {
	psinfo := fmt.Sprintf("host=%s port=%d user=%s password=%s dbname=%s sslmode=disable", host, port, user, pw, dbname)

	db, err := sql.Open("postgres", psinfo)
	if err != nil {
		fmt.Println("DB 연결 실패")
	}
	defer db.Close()

	http.HandleFunc("/test", func(w http.ResponseWriter, req *http.Request) {
		if req.Method != http.MethodGet {
			w.Write([]byte("잘못된 접근"))
			return
		}

		appName := "test"
		scriptName := "script"
		msg := "Hello Postgresql!"

		query := `INSERT INTO log ("APPNAME", "SCRIPTNAME", "MSG") VALUES ($1, $2, $3)`
		_, err = db.Exec(query, appName, scriptName, msg)

		if err != nil {
			w.Write([]byte(err.Error()))
		} else {
			w.Write([]byte("insert 성공!"))
		}
	})

	fmt.Println("Server is running!")
	http.ListenAndServe(":5000", nil)
}

 

exe 파일로 빌드하여 실행해보자.

 

go build -o server.exe main.go

 

실행 후 지정된 주소로 가면 결과를 확인해볼 수 있다.

 

 

 

728x90
728x90

'Golang' 카테고리의 다른 글

Golang으로 백준 빠른 입출력  (0) 2024.11.04