FLASK_플라스크로 API 만들기_순한맛.(feat. sql,json)

JSkim·2022년 7월 7일

나는..프론트앤드 개발자...인데...

걍 흥미위주로 해봄..

DB에서 데이터 가져와서
요청오면 json형식으로 던져주는 API를 만들어보자.

일단 파이참 깔아서 새프로젝트로 플라스크를 지정하자

참고로 난 파이썬3.9버전 사용함!

그리고

import할꺼

from flask import Flask, jsonify
import pymysql
from flask_cors import CORS

flask: 플라스크이다.
jsonify: db에서 쿼리한거 json형식으로 보낼꺼니까...
pymysql: 마리아DB쓰는 중임.
flask_cors: localhost로 테스트하는데 CORS 때문에 테스트를 못하길래..

암튼 이렇게 깔아주십쇼

일단

pymysql로 DB에 연결 해보자

conn = pymysql.connect(db='DB이다',user='유우저이름',password='비밀번호486',host='연결할 url',charset='utf8')
cur = conn.cursor(pymysql.cursors.DictCursor)
sql = "SELECT 뭐라뭐라 DB에서 필요한거 선택 ㄱㄱ"
cur.execute(sql)
exam_list = cur.fetchall()

거의 구글이 알려주는거 복.붙. 한거 맞습니다.

cursor() 이렇게 안쓰고 안에 pymysql.cursors.DictCursor 써준 이유는
json으로 변환 했을 때 column 이름 같이 가져와줌.

예를 들어서

그냥 cursor()만 했을 때

  • [[사람1,30,전사],[사람2,23,궁수]]

cursor(pymysql.cursors.DictCursor) 했을 때

  • [
    {이름: 사람1, 레벨:30, 직업:전사},
    {이름: 사람2, 레벨:23, 직업:궁수}
    ]

이런 차이...

프론트에서 JSON.parse 해서 받을 때 더 예쁘게 나온다.

암튼 그담에

app = Flask(__name__)
cors = CORS(app, resources={r'*': {"origins": "*"}})
app.config['JSON_AS_ASCII'] = False

cors 저거는 로컬에서 테스트할 때 app.py 실행하고
npx http-server 해서 js 로 열어보니까 CORS오류나서 세팅해준것.

app.config['JSON_AS_ASCII'] = False 이것은 jsonify(exam_list) 하니까 한글을 못 읽어서 해줌.

마지막 코드

@app.route('/get',methods=['GET'])
def get():
    return jsonify(exam_list)


if __name__ == '__main__':
    app.run()

http://127.0.0.1:5000/get 했을 때 json형식으로 변환된 exam_list 를 볼 수 있다.

전체 코드

from flask import Flask, jsonify
import pymysql
from flask_cors import CORS


conn = pymysql.connect(연결설정)
sql = "SELECT sql설정"
cur.execute(sql)
exam_list = cur.fetchall()
app = Flask(__name__)
cors = CORS(app, resources={r'*': {"origins": "*"}})
app.config['JSON_AS_ASCII'] = False


@app.route('/get',methods=['GET'])
def get():
    return jsonify(exam_list)


if __name__ == '__main__':
    app.run()

담에는 이거 JS에서 가져오는 것 포스팅 해야지.

profile
제주도 프론트앤드 개발자의 개발 일기

0개의 댓글