IT/Django

python script에서 django model 얻는법

bepuri 2023. 5. 23. 11:37
728x90
BASE_DIR = Path(__file__).resolve().parent
syspath = str(BASE_DIR.parent.parent)

- backend

  - backend

    - settings.py

  - myapps

    - sql

      - script.py

 

내 폴더 구조는 위와 같은데..

script.py에서 궁극적으로 backend.settings의 정보를 가져와서 django.setup()을 실행해줄수 있는 구조를 맞춰주면된다.

 

1. BASE_DIR은 sql폴더를 가르키고 있다.

2. BASE_DIR(sql폴더)을 기준으로 2번 상위 폴더로이동해야 최상위 backend 프로젝트 폴더로 이동할 수 있다.

 

그래서 syspath는 BASE_DIR.parent.parent를 해준것이다. 이대로 syspath변수에 담으면 WindowsPath 타입으로 담겨서 아래 django.setup이 제대로 진행이 안된다.

따라서 문자열로 치환해준 뒤 아래 코드들을 추가로 작성 후 실행해주면 정상적으로 django 모델이 불러와지는것을 확인할수 있을것이다.

 

BASE_DIR = Path(__file__).resolve().parent
syspath = str(BASE_DIR.parent.parent)
import django

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "backend.settings")
django.setup()

from myapps.models import *
728x90