Chapter 3-2 Flask-SQLAlchemy 구축(app.py)

2025. 4. 21. 10:16·Flask

📌 개념 정리

3-2. Flask-SQLAlchemy 구축

💻 전체 코드 예시 (app.py)

from flask import Flask
from flask_smorest import Api
from flask_sqlalchemy import SQLAlchemy
from db import db
from models import User, Board

app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:oz-password@localhost/oz'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db.init_app(app)

app.config["API_TITLE"] = "My API"
app.config["API_VERSION"] = "v1"
app.config["OPENAPI_VERSION"] = "3.1.3"
app.config["OPENAPI_URL_PREFIX"] = "/"
app.config["OPENAPI_SWAGGER_UI_PATH"] = "/swagger-ui"
app.config["OPENAPI_SWAGGER_UI_URL"] = "https://cdn.jsdelivr.net/npm/swagger-ui-dist/"

from routes.users import user_blp
from routes.board import board_blp

api = Api(app)
api.register_blueprint(user_blp)
api.register_blueprint(board_blp)

from flask import render_template
@app.route('/manage-boards')
def manage_boards():
    return render_template('boards.html')

@app.route('/manage-users')
def manage_users():
    return render_template('users.html')

if __name__ == '__main__':
    with app.app_context():
        db.create_all()
    app.run(debug=True)

🚦 단계별 프로세스 흐름 및 설명

📍 Step 1: Flask 앱 생성 및 초기화

app = Flask(__name__)
  • Flask 애플리케이션 인스턴스를 생성합니다.

📍 Step 2: 데이터베이스 설정 및 연결

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:oz-password@localhost/oz'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
  • MySQL 데이터베이스에 연결하기 위한 설정을 정의합니다.
  • SQLAlchemy 이벤트 추적 기능을 비활성화하여 성능을 최적화합니다.

📍 Step 3: SQLAlchemy 초기화

db.init_app(app)
  • SQLAlchemy를 Flask 앱에 초기화하여 데이터베이스 작업을 가능하게 합니다.

📍 Step 4: API 및 Swagger 설정

app.config["API_TITLE"] = "My API"
app.config["API_VERSION"] = "v1"
app.config["OPENAPI_VERSION"] = "3.1.3"
app.config["OPENAPI_URL_PREFIX"] = "/"
app.config["OPENAPI_SWAGGER_UI_PATH"] = "/swagger-ui"
app.config["OPENAPI_SWAGGER_UI_URL"] = "https://cdn.jsdelivr.net/npm/swagger-ui-dist/"
  • Flask-Smorest를 사용하여 REST API 문서를 자동으로 생성하고 관리합니다.

📍 Step 5: Blueprint 설정 및 등록

from routes.users import user_blp
from routes.board import board_blp

api = Api(app)
api.register_blueprint(user_blp)
api.register_blueprint(board_blp)
  • 라우트 관리를 효율적으로 하기 위해 Blueprint를 사용하고, 각 라우트 모듈을 등록합니다.

📍 Step 6: 웹 페이지 렌더링 라우트 설정

@app.route('/manage-boards')
def manage_boards():
    return render_template('boards.html')

@app.route('/manage-users')
def manage_users():
    return render_template('users.html')
  • 특정 URL에 접근했을 때 HTML 템플릿을 렌더링하여 사용자 관리 및 게시판 관리 페이지를 제공합니다.

📍 Step 7: 애플리케이션 실행 및 DB 테이블 생성

if __name__ == '__main__':
    with app.app_context():
        db.create_all()
    app.run(debug=True)
  • 애플리케이션이 실행될 때, 정의된 모델에 따라 데이터베이스 테이블이 자동으로 생성됩니다.
  • debug 모드를 활성화하여 개발 환경에서 오류를 쉽게 추적할 수 있도록 합니다.

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

  • Flask 앱 생성 및 초기 설정을 합니다.
  • 데이터베이스 설정 및 SQLAlchemy를 통해 관리합니다.
  • Blueprint를 통해 API 관리를 효율적으로 합니다.
  • 최종적으로 앱을 실행하여 DB 테이블을 생성하고 앱을 가동합니다.

 

'Flask' 카테고리의 다른 글

Chapter 3-4 Flask-SQLAlchemy 사용자 관리 라우트 구축(routes/user.py)  (0) 2025.04.21
Chapter 3-3 Flask-SQLAlchemy 모델 구축(models.py)  (0) 2025.04.21
Chapter 3-1 ORM이란? Flask-SQLAlchemy란?  (0) 2025.04.21
Chapter 2-7 Flask MySQL CRUD 애플리케이션 구현  (0) 2025.04.18
Chapter 2-6 Flask-MySQLdb 설정 및 사용법  (0) 2025.04.18
'Flask' 카테고리의 다른 글
  • Chapter 3-4 Flask-SQLAlchemy 사용자 관리 라우트 구축(routes/user.py)
  • Chapter 3-3 Flask-SQLAlchemy 모델 구축(models.py)
  • Chapter 3-1 ORM이란? Flask-SQLAlchemy란?
  • Chapter 2-7 Flask MySQL CRUD 애플리케이션 구현
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (597) N
      • Python (32)
      • 프로젝트 (43)
      • 과제 (25)
      • Database (40)
      • 멘토링 (10)
      • 특강 (29)
      • 기술블로그 (32)
      • 기술블로그-Django편 (136) N
      • 기술블로그-Flask편 (35)
      • AI 분석 (4) N
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (61)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
Chapter 3-2 Flask-SQLAlchemy 구축(app.py)
상단으로

티스토리툴바