공공API - 국민연금사업장 목록을 활용한 국민연금사업장 조회 서비스 개발(3)
공공API - 국민연금사업장 목록을 활용한 국민연금사업장 조회 서비스 개발(2)까지, postgresql의 table과 column을 생성했기에, 이제 데이터를 넣어보자.
데이터를 넣기위한 파이썬 파일 inputter.py 파일 하나를 생성했다. inputter.py 는 데이터베이스에 데이터 저장용으로만 사용하는 파일이다. pgadmin4로도 당연히 데이터를 테이블에 저장할 수 있지만, 우리가 다루는 api의 양이 544122개라는 엄청난 숫자이기에 직접 수작업으로 하는 것은 매우매우 힘들다. 그렇기에 python에서 제공하는 requests를 통해 api의 content를 불러와 json형식으로 읽어들인 후, 각 정보를 array에 저장하여 반복을 통해 데이터베이스에 저장하도록 하겠다.
우선 우리 데이터베이스인 postgresql과 연결시켜주는 psycopg2를 import시켜주어야 한다. 이후 host명, database명, user명, password를 설정하면 연결이 완료되고 연결이 제대로 완료되었다면 삽입 명령 시 에러가 나지 않고 제대로 데이터베이스 테이블에 들어가 있게 된다.
위와 같이 설정하면 connect하겠다는 의미이고, con.cursor()을 통해 해당 데이터베이스를 선택 이후 sql문 명령어 작성해 데이터베이스에 데이터 삽입이 가능하다.
연결을 일단 시켜놓았으면 inputter.py에서 api의 데이터가 잘 불러와지는지 확인해야한다. 데이터를 불러오기 위해서는 requests 라이브러리가 필요한데 pip install requests 후 import하면 사용가능하다. json도 마찬가지.
우선




import json
import requests
import psycopg2
con = psycopg2.connect(
host = "localhost",
database = "MMHDM",
user = "postgres",
password = "비밀번호"
)
# member = [] # 가입자 수
# number = [] # 사업자등록번호
# isjoin = [] # 사업장가입상태코드
# address = [] # 사업장도로명 상세주소
# companyname = [] # 사업장 명
# companysecotr = [] # 사업장 업종코드 명
# 총 데이터 -- 544122 --> 페이지 당 10 --> 마지막 페이지 54413
member = [] # 가입자 수
number = [] # 사업자등록번호
isjoin = [] # 사업장가입상태코드
address = [] # 사업장도로명 상세주소
companyname = [] # 사업장 명
companysector = [] # 사업장 업종코드 명
for num in range(1, 54411):
comp = requests.get("https://api.odcloud.kr/api/15083277/v1/uddi:d7e2de87-da03-4ec4-9741-ef4208ce393c?page={}&perPage=10&serviceKey=(서비스키)".format(num))
js = json.loads(comp.content)
for num2 in range(10):
member.append(js["data"][num2]['가입자수'])
number.append(js["data"][num2]['사업자등록번호'])
isjoin.append(js["data"][num2]['사업장가입상태코드 1 등록 2 탈퇴'])
address.append(js["data"][num2]['사업장도로명상세주소'])
companyname.append(js["data"][num2]['사업장명'])
companysector.append(js["data"][num2]['사업장업종코드명'])
cur = con.cursor()
for num3 in range(0, 544100):
cur.execute("insert into moneytable (id, member, number, address, companyname, companysector, isjoin) values (%s, %s, %s, %s, %s, %s, %s)", (num3+544121, member[num3], number[num3], address[num3], companyname[num3], companysector[num3], isjoin[num3]))
con.commit() ## 입력 후 해줘야 하는 commit()
cur.close()
con.close()
코드는 위와 같다.
이제 데이터베이스에 데이터도 넣었으니 해야할 일은 웹 페이지를 구성하고, 검색할 수 있게 만드는 것이다.
본인은 웹 디자인에 실력이 출중하지 못하므로 우선 간단하게 만들어보도록 한다. 웹 페이지를 구성하고, 검색을 구현하는 것은 다음 단계에서 설명을 이어가도록 하겠다.