Post

Flask with SQLAlchemy

Flask with SQLAlchemy

Flask with SQLAlchemy

“Working outside of application context”

Flask 애플리케이션 컨텍스트 외부에서 작업을 시도했다는 것을 의미 Flask에서는 특정 작업들이 애플리케이션 컨텍스트 내에서 실행되어야 한다. 이 컨텍스트는 Flask가 실행 중인 동안 애플리케이션과 관련된 정보에 접근할 수 있게 해준다. 이 문제를 해결하기 위해, create_all() 메서드를 호출하기 전에 Flask 애플리케이션 컨텍스트를 생성해야 한다.

with app.app_context(): 구문을 사용

code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

# Flask 애플리케이션 인스턴스 생성
app = Flask(__name__)

##CREATE DATABASE
# 'SQLALCHEMY_DATABASE_URI'는 사용하는 데이터베이스에 맞게 설정
# 예: SQLite를 사용하는 경우 'sqlite:///example.db'
app.config['SQLALCHEMY_DATABASE_URI'] = "sqlite:///new-books-collection.db"
#Optional: But it will silence the deprecation warning in the console.
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

# SQLAlchemy 인스턴스 생성
db = SQLAlchemy(app)


##CREATE TABLE
class Book(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(250), unique=True, nullable=False)
    author = db.Column(db.String(250), nullable=False)
    rating = db.Column(db.Float, nullable=False)

    
    # __repr__(self): 메서드는 Python에서 클래스의 인스턴스를 문자열로 표현하는 방법을 정의. 
    # 이 메서드는 클래스의 객체가 어떻게 출력될지를 결정하며, 주로 디버깅과 로깅 목적으로 사용
    def __repr__(self):
        return f'<Book {self.title}>'

#✅ 애플리케이션 컨텍스트 내에서 데이터베이스 테이블 생성
# 이렇게 함으로써 Flask 애플리케이션 설정에 접근할 수 있음    
with app.app_context():
    db.create_all()



This post is licensed under CC BY 4.0 by the author.