VsCode(app.py)
from flask import Flask, request,Blueprint # 파일 관리를 위해 Blueprint # 해당 파일 명을 import 진행 # from 파일명 import 변수명 from dbConnect import member app = Flask(__name__) # register_blueprint() 사용해서 연결 app.register_blueprint(member, url_prefix="/member") # prefix 별칭 @app.route('/') def test(): # return타입에 html 띄울 수 있는 함수 혹은 문자열 혹은 json이 반환 return 'hello' @app.route('/send') def send(): # 데이터 받는법 # request.args.get('보내준 곳에서의 key값') test = request.args.get('test') print(test) return "hello234" if __name__ == '__main__': app.debug = True #저장 하면 즉시 반영 app.run('192.168.219.102', port = 8086)
VsCode(dbConnect.py)
# python - mysql 연결 라이브러리 import pymysql from flask import Blueprint, request import json # 1. Blueprint 설정 member = Blueprint("member", __name__, template_folder="templates") @member.route('/') def test(): return 'hello member' @member.route('/insert') def insert(): #0. 클라이언트 값 받기 email = request.args.get('email') password = request.args.get('password') age = int(request.args.get('age')) # request의 경우 str 타임으로 받아오기 때문에 DB와 타입 일치 위해 형변환! name = request.args.get('name') print(email,password,age,name) # 1. db 연결 - host, user, password,schema, encoding db = pymysql.connect(host='localhost', user='root', password='1234', db='flutter_db', charset = 'utf8') # 2. 데이터 접근 객 체(cursor 객체 생성) # db 연결한 변수 안에 cursor가 존재 cursor = db.cursor() # 3. sql문 작성 # sql = "insert into member values('test2','1234','test2',20)" # pymysql의 포맷팅 # %(변수명)s sql = "insert into member values(%(email)s, %(password)s, %(name)s, %(age)s)" # 4. 실행 cursor.excute(sql) cursor.execute(sql,{"email": email, "password" : password, "age" : age, "name" : name}) # 필수는 아니나 유용한 변수 insert, update, delete 성공한 행의 개수를 파악 row = cursor.rowcount # 5. 저장 후 db 닫기 db.commit() db.close() # 데이터 insert 성공시 row라는 변수에 양수가 들어가 예정(성공한 행의 개수) if row > 0: return "success" else : return "fail" @member.route("/login") def login(): # 0. 데이터 받기 id = request.args.get("id") password = request.args.get("pw") # 1. db 연결 db = pymysql.connect(host = "localhost", user ="root", password = "1234", db= "flutter_db", charset = "utf8") # 2. 데이터 접근 객체 생성 cursor = db.cursor() # 3.sql 작성 sql = "select * from member where id = %(id)s and pw = %(password)s" # sql = "select * from member" # 4. 실행 cursor.execute(sql, {'id': id, 'password' : password}) # 5. 결과 받아오기 result = cursor.fetchall() # 모든 행에 데이터 가져오기 # cursor.fetchone() # 한개의 행만 가져오기 # cursor.fetchmany(2) # ()안의 숫자 행 만큼 가져오기 print(result) # select 결과값은 튜플로 가져옴 # 튜플은 Flask 내에서 reurtn되지 않습니다!!(return이 가능 한 타입은 json혹은 문자열) # 튜플은 json타입으로 변환 row_headers = [x[0] for x in cursor.description] #db table의 name, type code, size~~ print(row_headers) # table의 컬럼명 json_data = [] # dict 구조들이 들어갈 예정 for rv in result: json_data.append(dict(zip(row_headers, rv))) #zip 함수 사용해 다른 2개를 묶는 역할 -> 튜플 #튜플 -> dict로 형변환 #dict 가 있는 list를 json으로 변환 --> json 라이브러리 사용 # json.dumps() data = json.dumps(json_data) # 마지막 db 저장 close db.commit() db.close() return data