인프런 커뮤니티 질문&답변

류재안님의 프로필 이미지
류재안

작성한 질문수

파이썬 웹 개발(Flask, SQLAlchemy 이용)

db, model 2

[db, model2] inflearn 테이블 생성오류시 참고하세요.

작성

·

114

·

수정됨

0

안녕하세요.

혹시 저처럼 안되시는 분 참고하시라고 올립니다.

 

강의시점과 현시점이 차이가 나서 그런지

강사님 화면대로 하는데 에러가 나서 구글링을 해보니,

추가로 해줘야 한다고 해서 하고 나시 성공했네요.

[에러화면]

[구글링 참고화면 ]

https://stackoverflow.com/questions/73961938/flask-sqlalchemy-db-create-all-raises-runtimeerror-working-outside-of-applicat

[수정사항]

[성공화면]

** 이후 과정에도

from application import app

app.app_context()가.push()

가 계속 필요하네요.

 

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

Flask 애플리케이션에서 app.app_context().push()를 사용하는 것이 필수적인 경우가 있습니다. 특히 데이터베이스와 관련된 작업을 할 때, 애플리케이션 컨텍스트 내에서 해당 작업들이 실행되어야 하기 때문입니다. 작성하신 내용을 보면, Flask의 애플리케이션 컨텍스트가 올바르게 설정되지 않아 RuntimeError가 발생한 것으로 보입니다. 이 문제를 해결하기 위해 with app.app_context(): 블록 안에서 db.create_all()를 호출하여 모델에 기반한 테이블을 생성해야 합니다.

올려주신 이미지와 본문 내용에 따라 Flask-SQLAlchemy가 3.0 버전 이상부터 데이터베이스 엔진과 세션 객체에 접근하기 위해 액티브한 Flask 애플리케이션 컨텍스트가 필요하다는 것을 알 수 있습니다. 따라서, Flask 애플리케이션 컨텍스트 내에서 db.create_all()을 호출하도록 코드를 수정하시어 정상적으로 테이블 생성이 가능해진 것 같습니다.

해당 내용을 참고하시어 향후 개발 과정에서 필요한 부분에 적용하시면 좋을 것 같습니다.

도움이 필요하시면 언제든지 추가 질문을 해주시기 바랍니다. 감사합니다!

류재안님의 프로필 이미지
류재안

작성한 질문수

질문하기