Flask

Chapter 2-6 Flask-MySQLdb 설정 및 사용법

Chansman 2025. 4. 18. 19:46

📌 Flask-MySQLdb 설정 및 사용법

이번 포스팅에서는 Flask 애플리케이션에서 MySQL을 사용하는 방법을 다뤄보겠습니다. Flask와 MySQL을 연결할 때 flask-mysqldb를 사용하면 쉽게 연결할 수 있습니다. 단계별로 설치 및 설정 방법을 안내하고, 실제 예시 코드를 통해 설명드리겠습니다.


🚦 1. 가상환경 설정 및 flask-mysqldb 설치

(1) 가상환경 접속 후 flask-mysqldb 추가

먼저, Flask 애플리케이션을 위한 가상환경을 활성화한 후, flask-mysqldb를 설치해야 합니다. 아래 명령어를 사용해 설치하세요.

> pip install flask-mysqldb
  • 설치 후, Flask와 MySQL을 연동할 준비가 되었습니다.

참고자료:

설치 이슈 (맥 사용자의 경우)

  • 맥에서 설치 시, pkg-config가 없다는 오류가 발생할 수 있습니다. 이 경우, pkg-config를 설치하여 해결할 수 있습니다.
> brew install pkg-config
  • pkg-config는 라이브러리의 컴파일 및 링크 옵션을 제공하는 중요한 툴입니다.

💻 2. MySQL 테이블 생성

MySQL 데이터베이스와 테이블을 생성해야 합니다. 아래 SQL 명령어로 데이터베이스와 테이블을 설정할 수 있습니다.

(1) MySQL 데이터베이스 생성

CREATE DATABASE oz;
USE oz;

(2) MySQL 테이블 생성

 
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100)
);

💡 3. Flask 애플리케이션에서 MySQL 연동하기

flask-mysqldb를 설치하고 MySQL 테이블을 만든 후, Flask 애플리케이션에서 MySQL을 사용할 수 있게 됩니다. 간단한 예시로, 사용자가 입력한 데이터를 MySQL에 저장하고 조회하는 코드를 작성해보겠습니다.

(1) Flask 설정 코드 예시

from flask import Flask, request, jsonify
from flask_mysqldb import MySQL

app = Flask(__name__)

# MySQL 연결 설정
app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'root'
app.config['MYSQL_PASSWORD'] = 'yourpassword'
app.config['MYSQL_DB'] = 'oz'

mysql = MySQL(app)

@app.route('/add_user', methods=['POST'])
def add_user():
    name = request.json['name']
    email = request.json['email']
    cursor = mysql.connection.cursor()
    cursor.execute("INSERT INTO users (name, email) VALUES (%s, %s)", (name, email))
    mysql.connection.commit()
    cursor.close()
    return jsonify({'message': 'User added successfully'})

@app.route('/get_users', methods=['GET'])
def get_users():
    cursor = mysql.connection.cursor()
    cursor.execute("SELECT * FROM users")
    users = cursor.fetchall()
    cursor.close()
    return jsonify(users)

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

(2) 동작 원리

  • POST /add_user: 사용자 이름과 이메일을 입력받아 MySQL에 저장합니다.
  • GET /get_users: MySQL에서 모든 사용자 정보를 조회하여 반환합니다.

🧪 실전 활용

실제로 위 코드를 실행하면, POST 요청을 통해 사용자를 추가하고, GET 요청으로 데이터를 조회할 수 있습니다. 이를 통해 간단한 Flask와 MySQL 연동 애플리케이션을 만들 수 있습니다.


🧠 고급 팁

  • SQL 인젝션 방지: 위 코드에서는 SQL 쿼리에서 사용자 입력을 직접 사용하지 않고, 파라미터화된 쿼리(%s)를 사용하여 SQL 인젝션 공격을 방지합니다. 이는 보안상 매우 중요합니다.
  • 에러 처리: 실제 서비스에서는 MySQL 연결 실패, 쿼리 오류 등을 처리하는 코드도 추가해야 합니다. 예외 처리 코드를 추가하여 안정성을 높일 수 있습니다.

✅ 마무리 요약 및 복습 포인트

  1. flask-mysqldb 설치: pip install flask-mysqldb 명령어로 설치하고, MySQL과 Flask를 연결합니다.
  2. MySQL 테이블 생성: MySQL에서 CREATE DATABASE와 CREATE TABLE 명령어로 데이터베이스와 테이블을 설정합니다.
  3. Flask와 MySQL 연동: flask-mysqldb를 활용해 Flask 애플리케이션에서 MySQL에 데이터를 추가하고 조회하는 방법을 학습했습니다.