개발 환경 구축은 아래 링크를 통해 진행 가능하니, 완료 후 아래 작업 권장드립니다.

 

[ python 3.7.5 / Flask 1.1 ]

 

 

1. 프로젝트 디렉토리 생성하여 이동

$ mkdir project

$ cd project

 

 

 

2. 데이터 가져와 가공하는 models.py 생성

pymysql을 통해 쿼리를 날리고, 결과값을 딕셔너리 형태로 가져와 return하는 함수 생성합니다.

# vim models.py

import pymysql

class Stores():
    def get_all():
        conn = pymysql.connect(host='localhost', port=3306, db='testdb', user='testuser', passwd='testpasswd', charset='utf8')
        curdic = conn.cursor(pymysql.cursors.DictCursor)
        sql = "SELECT * FROM store_information"
        curdic.execute(sql)
        store_lists = curdic.fetchall()
        return store_lists

 

 

 

 

3. route 부분인 app.py 생성

models.Stores의 get_all 함수 return값인 딕셔너리형 데이터들을 json으로 변경하여 return해줍니다.

# vim app.py

from flask import Flask, jsonify
from models import Stores	# 아래에서 추후 생성해줄 예정, DB에서 데이터를 가져오기 위한 파일 생성 예정

@app.route('/test')
def test():
    data = Stores.get_all()
    return jsonify(data)

 

 

 

4. 서버 실행 파일 만들기

# vim runserver.py

from flask import Flask
from app import app

if __name__ == "__main__":
    app.run(host='0.0.0.0', port='5000', debug=True)

 

 

 

5. runserver 파일 실행하여 서버 올리기

$ python runserver.py

 

 

 

6. 웹에서 json 형태로 데이터 잘 출력되는지 확인하기

 

 < 주소 예시 >

999.888.777.666:5000/test

 

 < 정상 출력값 예시 >

[

    {

        "hello": "welcome",

        "name": "susan"

    },

    {

        "hello": "Hi",

        "name": "John"

    }

]

 

 

 

7. 추가 사항

 jsonify는 아주 간편하지만, 아스키 이스케이프 인코딩을 적용하기 때문에 Flask처럼 웹 서버로 쓰이는 환경에서는 데이터가 변경되어 전송됩니다. 한글로 데이터를 주고받는 API라면 jsonify가 아니라, json.dumps 사용을 권장하는 편이라고 합니다.

 jsonify를 사용하면서 한글 데이터를 유지하여 전송할 수 있는 방법은 아래 링크를 통해 확인할 수 있습니다.

https://growingsaja.tistory.com/354

 

 

 

+ Recent posts