[❗️ERROR] flask with SQLAlchemy

sing sang song·2023년 12월 20일
0

❗️ERROR

목록 보기
5/5

"Working outside of application context"

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

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

code

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()


profile
세상을 선명하게

0개의 댓글