공공API - 국민연금사업장 목록을 활용한 국민연금사업장 조회 서비스 개발(2)

2022. 7. 22. 14:30How to become a real programmer/Back-End

데이터베이스를 설치했으니, 이제 데이터를 넣어보자.

우선 독자들에게 요청하는 바가 있다면 간단한 파이썬 문법정도는 알고있으면 더 이해하기 수월할 것이다. 파이썬 문법을 모른다 해도 워낙 간단하기에 따라해도 상관은없다. 하지만 적어도 기본 입출력, 반복문, if, case문 정도는 알면 좋을 것.

프로젝트 버전관리 등을 수월하게 하기 위해 github프로젝트를 하나 만들겠다.

* github는 무엇인가? 버전관리 시스템 git을 이용한 서비스로서 어떠한 프로젝트를 진행할 때 활용하는 서비스이다. 

 

https://github.com/ 에서 sign up을 통해 회원가입을 할 수 있으며, 회원가입 과정은 크게 어렵지 않으니 혹시 어려우면 웹서핑을 통해 도움을 얻길 바란다. 만약, 아이디가 있다면 새로운 레포지토리를 만들어주자, 나는 repository 이름으로 MoneyMoneyHaeDoMoney로 하였다. https://github.com/Mseunghwan/MoneyMoneyHaeDoMoney

 

GitHub - Mseunghwan/MoneyMoneyHaeDoMoney: vacation project01

vacation project01. Contribute to Mseunghwan/MoneyMoneyHaeDoMoney development by creating an account on GitHub.

github.com

VSCode 터미널에서 우리가 만든 레포지토리를 연동할 수 있는데, 우선 vscode 터미널 창을 열어주자. 터미널 창이 없다면 VSC 상단 바에서 찾아 new terminal을 눌러주면 나온다.

터미널 창을 열었으면 로컬 컴퓨터의 이름과 현재 위치가 나오고 % 이후 명령어를 입력할 수 있는 커서가 깜빡거린다. 여기서 명령어를 입력해주면 된다. 우선 내가 원하는 폴더에 github프로젝트를 옮겨오기 위해서 'ls' 입력해 현재 위치가 어디고 무슨 폴더에 위치해있는지 확인해주고, 'cd 가고픈 폴더명' 을 통해 위치를 옮겨주자

필자는 위에서 확인 할 수 있듯 맥북을 쓰기에 m1환경이 기본인데 여기서 ls를 통해 기존에 만들어 놓은 TermProject01을 확인하고 cs TermProject01을 통해 위와 같은 창을 만들었다.

그리고 github 레포지토리를 불러오는 방법은 git clone 이라는 명령어를 통해서 가능한데, 아직 git을 설치하지 않았으므로 https://git-scm.com/ 페이지에서 git을 로컬에 설치해준다.

그리고 이후 git clone 레포지토리 주소를 해주어야 하는데 주소를 확인하기 위해서 깃 레포지토리 페이지로 가자.

가게 되면 위와 같이, 녹색 code부분이 있고 이를 누르면 HTTPS 밑 url이 나올텐데 복사 버튼을 눌러주자. 그리고 다시 VSC로 돌아가서 터미널 창에서 "git clone 복사한 주소" 명령을 쳐주자.

이렇게 하면 github에 올라가있는 폴더가 그대로 생성될 것이다. 이 폴더를 이렇게 까지 만든 이유는 이후에 개발이 훨씬 수월해지기 때문이다. 우리가 로컬에서 프로젝트 작업을 하다보면 초반에는 계속 관리하면서 파일들을 정리할 수 있지만 조금씩 테스트 과정을 거치다보면 빠르게 동일한 파일이름이 다른 폴더에 여러개 있다거나, 제대로 정리되지 않을때가 많은데 이러한 부분을 관리하게 해준다. git commit, git push과정을 통해 올려야 할 필수적 파일을 선택하여 프로젝트에 올리거나 .gitignore파일을 통해 몇 파일은 올리지 않게 자동 설정하는 등의 기능을 지원하는데 이와 같은 부분은 이후에 기회가 된다면 더 설명하겠다.

 

우선 github에 만든 레포지토리를 만들었으니 그 안에 python파일을 만들어 주자. 우선 우리가 개발할 웹 페이지는 python과 flask를 활용한 페이지이므로 python과 flask를 설치해주어야 한다. python은 VSC 마켓플레이스에서 설치할 수도 있으나, 공식 홈페이지에서 설치하는 것을 추천한다. (https://www.python.org/downloads/), 그리고 flask 는 pip에서 설치할 수 있는데 pip는 파이썬과 관련된 라이브러리를 설치,관리하는 것이라고 생각하면 된다. 자세한 pip 설치방법은 모 블로거분의 글을 참고하길 바란다.(https://heytech.tistory.com/318

만약 python과 pip가 설치 되었다면 이제 flask를 설치할 수 있다. pip install flask 혹은, python -m pip install flask 등을 통해서 flask를 설치해주자.

* flask에 대한 간략한 설명? 파이썬의 웹 프레임워크로서, 쉽게 말해 웹페이지 만들 수 있게 해주는 프레임워크라 생각하면 된다. app.py라는 파일(다른 이름으로 설정 가능)을 flask에 맞게 작성하고 실행하면 웹 구현이 쉽게 가능하다.

 

우선, flask를 통한 웹 페이지 구현의 가장 중심이 될 app.py 파일을 하나 만들어주자.

clone한 폴더에 app.py파일을 추가해주었다. 이 app.py 파일은 flask를 통해 파이썬 언어로 웹 브라우저를 구현하기 위해 사용하는 가장 기본적인 파이썬 파일이다.

당연히 이 상태로는 실행을 해도 아무일도 일어나지 않는다. flask를 사용하는 법은 간단한데,

우선 아래와 같이 flask를 import해주고, 어떤 경로로 들어가면 페이지에 rendering 시켜줄 수 있게 render_template를 import해준다.

from flask import Flask, render_template --> import

app = Flask(__name__--> flask를 실행하기 위해 app이 플라스크 파일이라는 것을 알림

@app.route('/'
def index():
return render_template("index.html")
--> route를 지정, 주소 뒤 '/' 붙는 것에 들어갔을 때 아래 코드가 실행되게 -- 즉, index.html이 페이지에 render_template되게 해준다
if __name__=='__main__':
app.run('0.0.0.0')
 
이렇게 코드를 작성하고, template 폴더를 하나 만들어줘야한다. 그리고 template폴더 안에 html파일을 만들어보자.

index.html은 flask를 실행하였을 때 주소 뒤 경로가 '/', 즉 가장 처음 페이지에 나타낼 때 나타나는 화면으로, 실행 후 바로 화면에 출력되는 html 파일이다. html파일은 문법에 맞게 

<!DOCTYPE html>
<html>
<head>
<title>test</title>
</head>
<body>
hihihi
</body>
</html>

이런식으로 간단하게 작성하고, app.py파일을 실행시켜보겠다.

flask로 app.py파일을 실행시키기 위해서는 터미널 창에서, flask run --host=0.0.0.0 --port=4000 을 통해 가능하다

이렇게 위처럼 flask가 실행되는 기본 주소인 내 ip주소에 포트를 4000으로 설정하여 실행하면,

밑 running on http://172.30.1.42:4000을 클릭해서 접속해보면 우리가 작성한 index.html파일의 내용이 출력되는 것을 볼 수 있다.

그러니까 경로 '/'는, flask 경로에서 아무것도 안했을 때 기본으로 접속되는 곳이라 생각하면 되고, 거기에 index.html이 출력된 것이다. 

그렇다면 우리는 flask를 통해 무엇을 해야하는가? 

첫 번째, 데이터베이스를 구축하여 국민연금사업장 목록을 저장한다

두 번째, flask로 구현된 페이지에 검색창을 추가, 데이터베이스에 사용자로부터 입력받은 사업장 명이 데이터베이스 내부 국민연금사업장 목록에 포함되는 곳인지 확인한다

세 번째, 결과 페이지로 사용자에게 보여준다

 

그렇다면 우선 여기까지 flask를 기초적으로 사용해보았고 데이터베이스를 간단하게 만들어보자.

필자는 postgresql을 사용할 것인데, 그 이유는 오픈소스로 db를 구축할 수 있는 sql 기반 데이터베이스로 가장 쉽게 다룰 수 있다고 생각했기 때문이다.(실은 가장 최근에 배운게 이거라 하하)

postgresql을 통해 데이터베이스를 만들려면 우선 postgresql을 설치해야 하는데, postgresql은 https://www.postgresql.org/download/ 이 곳에서 로컬 컴퓨터에 운영체제에 맞게 설치할 수 있다.

혼자 설치가 힘들다면 https://dora-guide.com/postgresql-install/https://dog-developers.tistory.com/122 와 같이 다른 분들이 설명하신 글들을 참고해도 될 것 같다.

 

postgresql을 설치했다면, pgadmin4도 함께 설치되었을 텐데, pgadmin4는 나같은 초보 데이터베이스 구축인에게는 하늘께서 선사한 선물과 같은 툴로, 데이터베이스를 한 눈에 쉽게 확인할 수 있게 해준다. 이게 없다면 원래는 프롬프트 창 같은 곳에서 GUI가 아닌 방식으로 수행되어야 하지만, pgadmin4는 그런 걱정을 덜어준다.

pgadmin4를 실행하면, 아래와 같은 창이 뜰 것인데, 

아까 설치 시 지정한 패스워드를 입력하여, 접속하자.

그리고 위와 같이, 데이터베이스를 클릭, 국민연금사업장 목록을 넣을 데이터베이스 하나를 create 해주자.

이름은 아무거나 해도 상관없다. 그리고 Save.

그러면 이렇게, 왼쪽에 데이터베이스가 하나 더 추가된 것을 볼 수 있다.

우리의 목표는, 국민연금사업장 목록에서 검색해 유의미한 정보를(즉, 해당 사업장이 어떤 곳이고 국민연금사업장인지) 사용자에게 보여줘야 한다.

그렇기에 데이터베이스에도 이러한 유의미한 정보를 넣을만한 테이블이 필요하다.

테이블은 데이터베이스 - Schemas - public - Tables 에 위치하며, 아까 데이터베이스를 만든것과 동일하게 오른쪽 클릭, create - table을 해주자.

table은 column(열)을 가지는데, 즉 데이터가 들어갈 열을 뜻한다. 우리가 사용하는 국민연금사업장 목록 API는 postman으로 확인해봤을 때, 유용한 정보로 사용할만한 목록이 가입자수, 사업자등록번호, 사업장가입상태코드(1 - 등록, 2 - 탈퇴), 사업장도로명상세주소, 사업장 명, 사업장업종코드명 정도로 축약할 수 있을 것 같은데. 그렇다면 이  6개 목록에 대한 정보를 넣기 위해 table column을 6개 생성해주어야 한다.

그렇기에 아래처럼, column창 왼쪽의 + 버튼을 눌러 6개 column을 추가해주고 Name으로 각각 정보를 나타낼 수 있게 작성해 Save해주자.

필자가 설정한 table의 column 이름은 각각 id - 데이터베이스에서 할당하는 id(넘버) / member - 가입자 수 / number - 사업자등록번호 / isjoin - 사업장가입상태코드 / address - 사업장도로명상세주소 / companyname - 사업장 명 / companysecotr - 사업장업종코드명 이다. 

이에 맞게 column내에 들어가는 데이터의 데이터 타입도 설정해주면 된다. 숫자면 bigint, isjoin은 1과 2만 있기에 boolean을 할당했고 나머지는 text이기에 text으로 설정했다. 그리고 column은 primanry로 설정된 column이 있어야하는데 나는 첫 번째 삽입 데이터부터 1, 그 다음이 2, 그 다음 3 이렇게 1, 2, 3, 4, 5 처럼 +1씩 할당하기위해 id값을 만들고 primary key로 설정하였다. 또한 이는 NULL이 될 수 없기에 Not NULL도 체크해주고 save했다.

우리의 column이 잘 생성되었는지를 확인하기 위해 옆에서 우리가 만든 테이블을 오른쪽 클릭, View/Edit Data - All Rows를 눌러주자

그렇다면 아래와 같이 우리가 설정한 column들, id - member - number - isjoin - address - companyname - companysector이 잘 생성되어 있는 것을 확인할 수 있다.

다음 단계에서 해당 데이터베이스에 API로 불러온 데이터를 파이썬을 통해 저장해보도록 하겠다.