2020/03/31 - [IT 관련/개발 자료] - python 파이썬 으로 로또 당첨번호 데이터 가져오기
예고해 드린대로 위의 전편에 이어서 이번에는 #python #파이썬을 이용해 #데이터 를 저장하는 방법을 포스팅해보겠습니다.
#python 에는 기본 모듈로 #SQLite 라는 #database #데이터베이스 가 내장되어 사용 가능하다고 하네요.
SQLite 이름 보시면 눈치채실 수 있겠죠? 가벼운 버전의 #SQL 엔진이긴하지만, 강력한 기능을 제공하여 많은
서비스에서 이용 중이라고 해요~ 저도 처음 써보는 거긴 합니다^^;
#DB 를 다루는 방법은 여러가지가 있겠지만, 이번에는 #코딩 #coding 으로 생성해서 사용하는걸로 해볼께요.
우선 어제 적었던 코드를 실행하면 #JSON 형식으로 데이터가 통짜로 넘어오고 있습니다.
{'totSellamnt': 3681782000, 'returnValue': 'success',
'drwNoDate': '2002-12-07', 'firstWinamnt': 0, 'drwtNo6': 40,
'drwtNo4': 33, 'firstPrzwnerCo': 0, 'drwtNo5': 37, 'bnusNo': 16,
'firstAccumamnt': 863604600, 'drwNo': 1, 'drwtNo2': 23,
'drwtNo3': 29, 'drwtNo1': 10}
얘를 다루기 위해선 먼저 #필드 #field 별로 데이터를 나눠야 합니다.
def DataSave(jsResult):
drwNo = jsResult["drwNo"] # 회차
drwNoDate = jsResult["drwNoDate"] # 당첨일
drwtNo1 = jsResult["drwtNo1"] # 당첨번호1
drwtNo2 = jsResult["drwtNo2"] # 당첨번호2
drwtNo3 = jsResult["drwtNo3"] # 당첨번호3
drwtNo4 = jsResult["drwtNo4"] # 당첨번호4
drwtNo5 = jsResult["drwtNo5"] # 당첨번호5
drwtNo6 = jsResult["drwtNo6"] # 당첨번호6
bnusNo = jsResult["bnusNo"] # 보너스번호
totSellamnt = jsResult["totSellamnt"] # 누적당첨금
firstWinamnt = jsResult["firstWinamnt"] # 1등당첨금
firstPrzwnerCo = jsResult["firstPrzwnerCo"] # 1등당첨인원
firstAccumamnt = jsResult["firstAccumamnt"] # 1등당첨금총액
returnValue = jsResult["returnValue"] # 실행결과
print(str(drwNo) + "|" + drwNoDate + str(drwtNo1) + "|" +
str(drwtNo2) + "|" + str(drwtNo3) + "|" + str(drwtNo4) + "|" +
str(drwtNo5) + "|" + str(drwtNo6) + "|" + str(bnusNo) + "|" +
str(totSellamnt) + "|" + str(firstWinamnt) + "|" + str(firstPrzwnerCo) +
"|" + str(firstAccumamnt))
데이터 처리를 하는 #함수 DataSave 에 먼저 필드 쪼개는 코드를 넣고 결과를 한번 보시죠.
"|" 문자를 기준으로 분리한 데이터들을 나열해봤는데요. 얘들을 다 각각의 변수에 넣어 저장했습니다.
이제 남은건...DB에 저장하는게 남았군요. 위의 소스에다가 아래 코드를 덧붙여 보겠습니다.
conn = sqlite3.connect("lotto.db")
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS LottoNo (drwNo integer, drwNoDate text, drwtNo1 integer,
drwtNo2 integer, drwtNo3 integer, drwtNo4 integer, drwtNo5 integer, drwtNo6 integer,
bnusNo integer, totSellamnt integer, firstWinamnt integer, firstPrzwerCo integer,
firstAccumamnt integer)''')
c.execute("INSERT INTO LottoNo VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
(drwNo,drwNoDate,drwtNo1,drwtNo2,drwtNo3,drwtNo4,drwtNo5,drwtNo6,bnusNo,totSellamnt,
firstWinamnt,firstPrzwnerCo,firstAccumamnt))
conn.commit()
conn.close()
먼저 lotto.db 라는 데이터베이스 파일에 접근하도록 하고, 이 파일과의 연결을 설정합니다.
그리고 CREATE 문을 통해 LottoNo 라는 테이블이 있으면 넘어가고, 없으면 생성하는 문장을 써줬어요.
(이 작업은 간단하게 그냥 코드로 했는데, 전에 소개시켜드렸던 #DBeaver 같은 툴을 이용해서 할 수도 있답니다.)
요거까지 하고나선...#IDE 의 #콘솔 에 출력되는 결과는 똑같아요!
전체 소스 코드부터 보여드릴께요. (펼쳐보기^^)
import requests
import json
import sqlite3
def DataSave(jsResult):
drwNo = jsResult["drwNo"] # 회차
drwNoDate = jsResult["drwNoDate"] # 당첨일
drwtNo1 = jsResult["drwtNo1"] # 당첨번호1
drwtNo2 = jsResult["drwtNo2"] # 당첨번호2
drwtNo3 = jsResult["drwtNo3"] # 당첨번호3
drwtNo4 = jsResult["drwtNo4"] # 당첨번호4
drwtNo5 = jsResult["drwtNo5"] # 당첨번호5
drwtNo6 = jsResult["drwtNo6"] # 당첨번호6
bnusNo = jsResult["bnusNo"] # 보너스번호
totSellamnt = jsResult["totSellamnt"] # 누적당첨금
firstWinamnt = jsResult["firstWinamnt"] # 1등당첨금
firstPrzwnerCo = jsResult["firstPrzwnerCo"] # 1등당첨인원
firstAccumamnt = jsResult["firstAccumamnt"] # 1등당첨금총액
returnValue = jsResult["returnValue"] # 실행결과
conn = sqlite3.connect("lotto.db")
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS LottoNo (drwNo integer, drwNoDate text, drwtNo1 integer,
drwtNo2 integer, drwtNo3 integer, drwtNo4 integer, drwtNo5 integer, drwtNo6 integer,
bnusNo integer, totSellamnt integer, firstWinamnt integer, firstPrzwerCo integer,
firstAccumamnt integer)''')
c.execute("INSERT INTO LottoNo VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
(drwNo,drwNoDate,drwtNo1,drwtNo2,drwtNo3,drwtNo4,drwtNo5,drwtNo6,bnusNo,totSellamnt,
firstWinamnt,firstPrzwnerCo,firstAccumamnt))
conn.commit()
conn.close()
print(str(drwNo) + "|" + drwNoDate + str(drwtNo1) + "|" + str(drwtNo2) + "|" + str(drwtNo3) + "|" + str(drwtNo4) + "|" + str(drwtNo5) + "|" + str(drwtNo6) + "|" + str(bnusNo) + "|" + str(totSellamnt) + "|" + str(firstWinamnt) + "|" + str(firstPrzwnerCo) + "|" + str(firstAccumamnt))
lotto_url = "https://www.dhlottery.co.kr/common.do?method=getLottoNumber&drwNo="
for i in range(5):
i += 1
resp = requests.get(lotto_url + str(i))
jsResult = resp.json()
DataSave(jsResult)
결과는 DB에 데이터가 제대로 들어갔는가를 확인해야겠는데요. 이거때문에라도.. DBeaver 로 연결하는걸 보여드려야겠네요^^
2020/03/30 - [IT 관련/개발 자료] - DBeaver! 데이터베이스 관리 툴 추천!! 이모든게 다 공짜!!
먼저 DBeaver 를 실행합니다. (굳이 DBeaver 이 아니더라도, SQLite 를 지원하는 툴은 다 상관없어요~)
왼쪽 상단의 새 연결을 선택하세요
SQLite 데이터베이스를 사용하니까 SQLite를 선택
방금 작업하던 파이썬 소스코드와 같은 폴더에 보시면 lotto.db 파일이 보이실꺼에요 이걸 선택~
이제 테이블에서 LottoNo 를 찾으시고 이걸 눌러서 Data 를 보시면~ 아까 #API 를 통해 호출했던 1 ~ 5회차의 데이터가
들어가있는게 확인됩니다!!
이제 데이터베이스에 데이터를 넣는거까지 해봤어요...다음엔 뭐하죠??
'IT 관련 > 개발 자료' 카테고리의 다른 글
python 파이썬 으로 로또 당첨번호 데이터 가져오기 (0) | 2020.03.31 |
---|---|
DBeaver! 데이터베이스 관리 툴 추천!! 이모든게 다 공짜!! (4) | 2020.03.30 |
파이참? pycharm!! 파이썬을 위한 개발 도구 소개 (4) | 2020.03.27 |
초간단 앱개발 맛보기! 로또 당첨 번호 API (2) | 2020.03.26 |
parity?? lrc?? crc?? checksum??? 이게 뭐야?? 데이터 오류 검출 방식 중 LRC(Longitudinal Redundancy Check)에 대하여 (2) | 2020.03.16 |