코딩하는 해달이

파이썬 - Flask를 이용해서 JSON인코딩한 MySql 데이터를 Android Studio에 보내기 (1) 본문

개인 공부/Python

파이썬 - Flask를 이용해서 JSON인코딩한 MySql 데이터를 Android Studio에 보내기 (1)

코딩하는 해달 2022. 8. 16. 21:37

Version & 참고 링크

더보기

 

일단 기본적인 데이터 흐름은 아래 그림과 같습니다.

데이터 흐름

 

사실 url에서 데이터를 받아오는 것은 PHP나 JSP와 같이 url에 데이터를 보낼 수 있으면 다 가지고와서 사용이 가능하기에 굳이 flask를 사용하지 않아도 됩니다. 즉 데이터흐름에서 flask자리에 php나 jsp가 와도 문제가 없다는 뜻입니다. 하지만 지금은 flask를 공부하고 있기에 flask를 이용해서 url에 띄워 보겠습니다.

 

 

가장 먼저 MySQL 워크벤치(혹은 MySQL Commend창에서 해도 됩니다.)에서 아래 코드를 입력해 DB을 만들어 줍니다.

CREATE DATABASE BBS;

DB이름은 임의로 BBS라고 하겠습니다.

생성된 DB에 아래 코드로 USER테이블을 만들어 줍니다.

CREATE TABLE `BBS`.`USER`(
	`userID` VARCHAR(20),
	`userPassward` VARCHAR(20),
	`userName` VARCHAR(20),
	`userGender` VARCHAR(20),
	`userEmail` VARCHAR(50),
	PRIMARY KEY(`userID`));

 

아래 코드로 테이블이 제대로 생성되었는지 확인해줍니다.

SELECT * FROM bbs.user;

테이블에서 데이터를 꺼내와야하기 때문에 데이터를 미리 넣어 줍니다.

INSERT INTO USER VALUES(
	'HAEDAL',
	'HAEDAL123',
	'해달',
	'Male',
	'HAEDAL@example.com');

데이터가 들어가 있는 모습

데이터를 입력하고, 이제 파이썬 flask를 이용해서 서버를 만들어 주어야 합니다.

아래 링크를 참고해서 파이썬 가상환경 설정을 해줍니다.

 - 파이썬 가상환경 설정

 

 

설정을 마친 후 VSCode를 실행시키고 app.py라는 파일을 생성한 후 아래 파이썬 코드를 입력해줍니다.

import pymysql
from flask import Flask
import datetime, json

conn = pymysql.connect(host='localhost', user='root', password='비밀번호', db='BBS', charset='utf8') # mysql 연결
curs = conn.cursor() # sql문을 입력할 cursor 생성

if conn.open: # DB 연결 여부 확인
    print('connected')
try:
    app = Flask(__name__) 
    # flask 메인 
    # __name__: 현재 이 파일을 실행하고 있는 파일의 이름이 들어감(원본과 같은 파일 일 경우 '__main__')

    @app.route('/test',methods=['POST','GET']) 
    # route() : 외부 웹브라우져에서 웹서버로 접근 시 해당 주소로 입력을 하게 되면 특정 함수가 실행되게 도와줌('/test': /test 주소에 접근하면 아래 함수 실행)
    def dbToWeb(): # DB에서 웹으로 데이터를 보내기위한 함수
            sql = "select * from USER" # DB에서 필요한 데이터 select하는 sql문
            curs.execute(sql) # sql문 실행
            rows = curs.fetchall() # select한 데이터 fetch (fetchall() : 모든 데이터 fetch)
            return json.dumps(rows) 
            # fetch한 데이터 json형식으로 변환 후 string으로 바꿔서 return

finally:
    app.run(host='0.0.0.0', port= 5000) # 웹서버 호스트, 포트 지정
    conn.close() # DB 연결 해제

그 후 VSCode의 cmd 터미널에서 flask run 혹은 python app.py를 입력해서 flask서버를 실행시켜줍니다.

아래 사진처럼 나타나면 성공적으로 실행 된 것입니다.

그 후에 웹 페이지를 실행 후 주소창에 http://127.0.0.1:5000/test 또는 http://자신의 아이피:5000/test 에 입력해 보면 아래 사진과 같이 JSON형태로 웹 페이지에 출력 된 것을 볼 수 있습니다.

 

이제 여기서 출력된 데이터를 안드로이드 스튜디오로 가져가서 출력하면 됩니다. 이 내용은 다음 게시글에서 다뤄보도록 하겠습니다.

반응형
Comments