반응형
썸네일
"파일로 데이터 가져오기"는 single item hit : artist 하나씩 url의 parameter에 넣어서 하나씩 requests 실행
(https://hellominji.tistory.com/66)
"batch 형식"에서는 artist를 여러개 묶어서 requests 실행 (※모든 API가 이 기능을 제공하는 것은 아니다. get several artists(docs-web apis에서 확인))
1. batch로 데이터 가져오기
현재까지 DB(artists 테이블)에 있는 id값을 모두 불러온다
cursor.execute("SELECT id FROM artists")
artists = []
for (id, ) in cursor.fetchall():
artists.append(id)
50개씩 가져와서 리스트로 만든 것을 하나의 item으로 해서 artist_batch 리스트에 넣는다
artist_batch = [artists[i: i+50] for i in range(0, len(artists), 50)]
데이터 가져오기
for i in artist_batch:
ids = ','.join(i) # 리스트로 묶여있던 것을 string으로 만든다
# 요청을 위한 URL 생성
URL = "https://api.spotify.com/v1/artists/?ids={}".format(ids)
r = requests.get(URL, headers=headers)
raw = json.loads(r.text)
데이터 확인
- print(raw)- print(len(raw['artists']))
2. 가져온 데이터로 DB UPDATE
리스트 생성 : artist_batch 리스트 아래
artist_genres = []
리스트에 데이터 추가 : raw = json.loads 아래
for artist in raw['artists']: # API 결과에서 하나씩 불러오기
for genre in artist['genres']: # genre key값
artist_genres.append(
{
'artist_id': artist['id'],
'genre': genre
}
)
데이터 INSERT & UPDATE (https://hellominji.tistory.com/65)
for data in artist_genres:
insert_row(cursor, data, 'artist_genres')
conn.commit() # 변경사항 적용
cursor.close() # DB 연결 끊기
여기까지 완료한 코드는 다음과 같다!
코드의 어느 파트에서 어떤 내용을 썼는지 확인 가능하고, 카테고리 번호는 github/wiki의 카테고리 번호와 동일하다.
https://github.com/helloMinji/chatbot_spotify/wiki/여기까지의-코드
이런 내용이 더 있으면 좋겠다, 이건 뭐라는지 모르겠다, 그 외의 어떤 얘기든 댓글로 남겨주세요!
반응형
'Data Science : Study > 2. Data Engineering (FastCampus)' 카테고리의 다른 글
5강-1. AWS DynamoDB 데이터베이스 생성 (0) | 2022.05.19 |
---|---|
4강-7. Python API 파일 형식으로 데이터를 여러번 요청하기 (0) | 2022.05.17 |
4강-6. DB에 데이터 넣기 (Python, Insert, Update) (0) | 2022.05.16 |
4강-5. Python에 mySQL DB 연결 (0) | 2022.05.15 |
4강-4. ERD (엔티티 관계도) (0) | 2022.05.14 |