파이썬으로 api 크롤링 후 mysql에 저장하기

bird.j·2021년 4월 5일
0

python

목록 보기
1/10

마켓컬리 클론코딩을 위해 마켓컬리 api를 불러와서 mysql과 연결해 데이터를 담아보았다.

1) 작업환경

: 파이참(requests, pymysql 패키지 설치)

2) API 불러오기

import pymysql
import requests

request_headers = {
     'authorization': 'Bearer ...'
}

url = "주소"

response = requests.get(url, headers=request_headers)
data = response.json()

마켓컬리는 authorization을 같이 보내야 api를 받아올 수 있다. authorization은 개발자 도구>network>headers>request headers에 있다.
만약 이를 보내지 않으면 error:token is required가 뜬다.

3) MySQL 연동하기

AWS에서 RDS mysql을 구매해 파이참과 연동한다.

conn = pymysql.connect(host='엔드포인트', port=3306, user='', password='', charset='utf8', db='') #DB 연결
cur = conn.cursor() #디폴트 커서 생성

4) 테이블 생성, 값 넣기

SQL문을 이용해 DB에 테이블을 생성하고 값을 넣어준다.

# 테이블 생성
sql = "CREATE TABLE 테이블이름(컬럼);"
cur.execute(sql) #sql수행
# 테이블 생성 시 자동으로 증가하는 아이디 값 컬럼 생성하기
id INT AUTO_INCREMENT PRIMARY KEY
# 데이터 삽입
sql = "INSERT INTO 테이블이름 (컬럼) VALUES (값);"
# 변수 데이터 삽입
sql = "INSERT INTO 테이블이름 (컬럼) VALUES (%s);"
values = (변수)
cur.execute(sql, values)
# 특정 컬럼 지우기
sql = "ALTER TABLE 테이블이름 DROP COLUMN 컬럼이름"
# 모든 데이터 지우기
sql = "DELETE FROM 테이블이름;"
# 테이블 지우기
sql = "DROP TABLE 테이블이름;"

SELECT * FROM 테이블이름을 sql쿼리로 넣어줬다면 다음 코드를 통해 결과를 프린트해서 볼 수 있다.

result = cur.fetchall()
print(result) #값 보기

마지막으로 commit을 통해 실제로 테이블에 변경사항을 반영하고 연결을 닫아주면 된다.

conn.commit() #반영하기
conn.close() #연결 닫기

5) 값(테이블) 보기

파이참에서 print를 해서 볼 수도 있지만 좀 더 엑셀스러운 모습으로 보고싶다면,
mysql workbench를 다운로드 받아서 구매한 AWS mysql과 연동하면 db에 담긴 정보를 좀 더 눈에 들어오게 볼 수 있다. 여기에서도 sql문을 활용해 db를 조작할 수 있다.


6) 인텔리제이와 구축한 db연동해서 값 보기

마지막으로 인텔리제이와 mysql을 연동하면 스프링부트에서 구축한 mysql db를 통해 값을 잘 꺼내올 수 있다.
오른쪽 database탭에서 mysql을 연결하고, +버튼을 누르면 query console이 있는데 이를 클릭하고 sql문으로 테이블 값을 볼 수 있다. 여기에서 db를 조작가능하다.



이 기회에 sql문법도 익힐 수 있어서 도움이 많이 되는 것 같다.

참고 | RDS와 python 연결하기
참고 | python mysql insert into table
참고 | mysql workbench 사용법
참고 | db에 데이터 저장
참고 | python에서 pymysql모듈 사용하기
참고 | mysql 테이블 생성
참고 | pycharm으로 mysql 연결하기

0개의 댓글