개발 환경 구축은 아래 링크를 통해 진행 가능하니, 완료 후 아래 작업 권장드립니다.
[ 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
'Development > Flask with Python' 카테고리의 다른 글
[Python3][Flask1.1] html에서의 if문 사용법 (0) | 2019.12.17 |
---|---|
[Solved][Flask1.1] 외부 css 파일 적용 방법 (0) | 2019.12.16 |
[Python3][Flask1.1] Flask로 blog 웹개발 실습 - 17 : Face Lift with Bootstrap (css) (0) | 2019.12.14 |
[Python3][Flask1.1] Flask로 blog 웹개발 실습 - 15 : 비밀번호 재설정 기능 (0) | 2019.12.13 |
[Errors][Flask][Mail] smtplib.SMTPServerDisconnected: please run connect() first (2) | 2019.12.13 |