스크래핑과 데이터베이스를 다 끝내고, 이제 API를 만들려고 한다. 그전에 이 특가 정보 사이트는 게시판으로 만들지 않으려고 한다. 댓글도 필요없고, 안에 게시글을 넣을 필요도 없고, 해당 링크로 넘어가기만 하면 되기 때문이다.

 

따라서 API로 DB정보를 모두 가져오고 가져온 내용을 웹에 표 형태로 붙여넣기만 하면 된다. 그래서, 날짜, 소스, 링크, 썸네일, 제목 등을 API를 통해 제공할 수 있게 flask로 API를 만들려고 했다. 그런데 이전에 배웠던 방식이라면 mariadb를 사용하여 API에 넣기 편하게 바로 딕셔너리로 데이터를 받았을 텐데, mariadb로 바꿨으니 DB 검색결과를 딕셔너리 형태로 변환해야 한다ㅠ 거참.. 뭐 하나 바꾸니 여러모로 피곤해진다.

 

그래도 이번엔 그렇게 어렵지는 않았다. 이전에 배운 내용들과, DB 관련해서 조금 찾아보니 쉽게 만들 수 있었다.

@app.route('/get_spdb')
def get_spdb():

    # DB 접속
	conn = pymysql.connect(host="XXXXXXXXXXX", port=XXXXX, user="root", password="root", db="XXXXXe", charset="utf8")
    # 커서를 사용
    curs = conn.cursor()
    # product_data 데이터베이스에서 모든 데이터를 가져오며, date 기준 내림차순으로 정렬한다.
    sql = "SELECT * FROM product_data ORDER BY date DESC;"
    ## sql 문 실행
    curs.execute(sql)
    ## 데이터 가져오기
    datas = list(curs.fetchall())
    # DB 접속 종료
    conn.close()

    # 최종 결과물을 담을 리스트 변수를 선언한다.
    result = []

    # DB 검색 결과를 딕셔너리 형태로 재생성한다.
    for data in datas:
        parsed_data = {'id' : data[0], 'title': data[1], 'link': data[2], 'date': data[3], 'source': data[4], 'thumbnail' : data[5]}
        result.append(parsed_data)

    #json화하여 결과를 리턴한다.
    return jsonify({'result': 'success', 'product_data': result})

일단 DB에서 SELECT 문으로 원하는 데이터를 가져오고, 그 데이터를 datas 라는 변수에 리스트 형태로 담았다. (리스트로 하지 않으면, 튜플 형태로 저장된다) 그리고 최종 결과물을 담을 변수를 result라는 이름으로 리스트 형태로 선언해두었다.

 

이제 for문으로, datas에 있는 리스트 요소(data)를 1개 (여기에는 id, title, link, date, source, thumbnail 이 있다) 씩 꺼내 0부터 5까지 총 6개의 내용을 가져오고, 그 내용들을 직접 딕셔너리형태로 변환했다. 그리고 그걸 json화 하여 출력한다.

 

결과는 다음과 같이 예쁘게 잘 나온다.

 

이제 이걸 html에 jquery를 통해 바로 붙여넣을 수 있다. 간단히 프로토타입으로 html을 만들어서 붙여 넣어 보았다.

 

이렇게 직접 화면으로 보니, 프로젝트가 꽤 진척되었다는게 느껴진다. 하지만 아직도 할 것이 많다...ㅠㅠ

+ Recent posts