본문 바로가기

React

React - Flask - Mysql 연동

1.  프로젝트 생성

react 

C:\react>npx create-react-app data-app
C:\react>npm start

Flask 

C:\react>mkdir server

C:\react>pip install Flask

DB

 workbench 사용하여 database를 만든 후

table을 생성했습니다.

create database testConnection;
use testConnection;
CREATE TABLE `testTable` (
    `id` int unsigned AUTO_INCREMENT NOT NULL ,
    `name` int unsigned  NOT NULL ,
    `age` varchar(30)  NOT NULL ,
     PRIMARY KEY (
        `id`
    )
);


데이터 삽입
INSERT INTO testTable(id,name,age) values(2,'233',26);
INSERT INTO testTable(id,name,age) values(1,'121',26);

App.js

import './App.css';
import { useEffect, useState } from 'react';
import axios from 'axios';

function App() {

  const [data, setData] = useState([])

  useEffect(() => {
    axios.get('/data')
    .then(res => {
        setData(res.data)
        console.log(res.data)
    }).catch(error => console.log(error));
  }, []);

  return (
    <>
      <h1> testTable data 가져오기 </h1>
    </>
  );
}

export default App;

사용하는모듈 설치

npm install axios 

 

package.json 

"proxy": "http://localhost:5000", 추가

 

server.py

from flask import Flask, jsonify, request
import pymysql
import json, datetime

app = Flask(__name__)

# 데이터 베이스 연결
def getCon():
  return pymysql.connect(host="localhost", 
                     user="root", password="1234", 
                     db="testConnection",
                     charset="utf8",
                     cursorclass=pymysql.cursors.DictCursor)

def json_default(value):
  if isinstance(value, datetime.date):
    return value.strftime('%Y-%m-%d')
  raise TypeError('not JSON serializable') 

# testConnection DB / testTable Table 가져오기
@app.route('/data', methods=['GET'])
def getData():
    print("1111111111111111")
    con = getCon()
    cursor = con.cursor()
    sql = 'SELECT * FROM testTable'
    cursor.execute(sql)
    
    data = cursor.fetchall()
    print(data)
    cursor.close()
    
    # 반환할 때 json형식으로 반환
    return json.dumps(data, default=json_default)

if __name__ == "__main__" :
    app.run(debug=True)

**

import json 

: python이 기본적으로 지원하는 데이터 타입인 list와 dictionary 구조를 유지한 채 json 형식으로 바꿔주고, json문자열을 해독해서 python 데이터타입으로 바꿔주는 모듈

** 

def json_default(value)

: json.dumps 에 데이터를 넣는 경우 json 이 알지못하는 타입이 포함되어있을때 json string으로 변환해주는 함수를 선언

 대표적인 예로는 날짜/시간 형태의 데이터로 인해

TypeError: Object of type date is not JSON serializable 에러가 발생할수 있다.

 

 

728x90

'React' 카테고리의 다른 글

React - Recoil 사용 중 놓쳤던 특징  (1) 2024.01.16
Axios - http -> https 변경 시 오류  (0) 2024.01.12
React - Hooks _ useState / useEffect /useRef  (1) 2023.10.27
React - Ref  (0) 2023.10.25
React - 이벤트 핸들링  (0) 2023.10.24