관리 메뉴

솜씨좋은장씨

[Python] flask와 mongoDB를 활용하여 REST API 만들기 1 - CSV 데이터를 불러와 mongoDB에 데이터 추가하기 본문

Programming/Python

[Python] flask와 mongoDB를 활용하여 REST API 만들기 1 - CSV 데이터를 불러와 mongoDB에 데이터 추가하기

솜씨좋은장씨 2020. 3. 29. 21:54
728x90
반응형

1. 필요한 라이브러리 설치하기

pip install pymongo
pip install pandas
pip install tqdm

먼저 필요한 라이브러리를 설치합니다.

 

2. csv에서 데이터 불러와서 json 형태로 만들기

CSV는 지난 캐치 프로그램 과제를 할때 만들었던 파일을 그대로 활용했습니다.

 

[캐치카페] 현직자와 함께하는 프로그래밍 3회차 과제 도전기 - 1 (API 데이터 자동으로 추가하기)

먼저 영화 데이터를 추가하기위해서 실제 네이버 영화에서 데이터를 크롤링해서 추가해주었습니다. 현재상영작 : 네이버 영화 상영 중 영화의 예매율/평점/좋아요 순 정보 제공. movie.naver.com 크롤링 해와야하..

somjang.tistory.com

import pandas as pd
from tqdm import tqdm

movie_data = pd.read_csv("movie_data_from_naver_series.csv")
def convertStringToList(string):
    data = string.split(',')

    my_list = []

    for dt in data:
        my_list.append(dt.replace('"', '').replace("'", '').replace("[", "").replace("]", '').replace(" ", ''))

    return my_list
def makeJsonList(movie_data):
    json_list = []
    for i in tqdm(range(len(movie_data['title']))):
        json_template = { "title": list(movie_data['title'])[i],
                          "posterUrl": list(movie_data['posterUrl'])[i],
                          "screeningStatus": "open",
                          "advanceRate": list(movie_data['advanceRate'])[i],
                          "advanceRateRank": list(movie_data['advanceRateRank'])[i],
                          "visitorRating": list(movie_data['visitorRating'])[i],
                          "expertRating": list(movie_data['expertRatings'])[i],
                          "plot": list(movie_data['plot'])[i],
                          "genres": convertStringToList(list(movie_data['genres'])[i]),
                          "runtime": list(movie_data['runtime'])[i],
                          "cast": convertStringToList(list(movie_data['cast'])[i]),
                          "released": list(movie_data['release'])[i],
                          "director": list(movie_data['director'])[i]
                          }
        json_list.append(json_template)
    return json_list
data_list = makeJsonList(movie_data)

 

3. 만들어진 list와 pymongo를 활용하여 mongoDB에 데이터 추가하기

mongod --dbpath=data/db

mongoDB 서버를 실행합니다.

from pymongo import MongoClient

my_client = MongoClient("mongodb://localhost:27017/")

mydb = my_client['movie_flask_api_database']
mycol = mydb['movie_data']


data_list = makeJsonList(movie_data)

x = mycol.insert_many((data_list))
print(x.inserted_ids)

 

4. 잘 추가되었는지 확인해보기

4-1. 터미널에서

use movie_flask_api_db
db.movie_data.find().pretty()

4-2. Python 코드를 활용해서

my_doc = mycol.find().sort("advanceRate", -1)

for x in my_doc:
    print(x)

예매율을 기준으로 내림차순으로 정렬하여 출력해보았습니다.

이제 이 DB를 활용하여

지난 캐치카페에서 현직자와 함께하는 프로그래밍 수업을 들으면서

강사님이 만들었던 영화정보 API를 직접 만들어서 그 API를 이 API로 대체하여 구현해보고자 합니다.

 

읽어주셔서 감사합니다!

Comments