Django ORM 개별 실행 방법

프로필 사진mingke

django orm dev tips

목차

Django ORM 개별 실행

Django를 이용해서 개발하다보면 ORM을 작성할 때, 서버를 실행하지 않고 ORM만 개별적으로 테스트 해보고 싶은 경우가 있습니다. 이럴때 사용할 수 있는 방법에 대해서 이번 포스팅에서 한 번 알아보겠습니다.

Django shell

ORM을 하나씩 CLI환경으로 실행할 수 있도록 기본 명령어가 제공됩니다.

python manage.py shell

다음과 같이 CLI가 실행되고 ORM을 하나씩 테스트 해볼 수 있습니다. ORM 뿐만이 아니라 어떠한 코드도 테스트해볼 수 있습니다. 다만 ORM을 사용할 수 있도록 DB와 연결된 shell이라고 생각하면 됩니다.

일반 파이썬 쉘과 동일하게 control + d 로 종료할 수 있습니다.

django shell
django 기본 쉘
  • 추가
pip install ipython

ipython 을 설치하면 CLI 사용성이 좀 더 증대됩니다.

Tab 키를 이용해 자동완성에 도움도 주고 한 번 썼던 코드는 투명한 글씨로 힌트를 줍니다.

django ipython shell
django IPython 쉘

Django Extensions runscript

shell이 아니라 script를 작성해서 모듈단위로 실행해 볼 수 있도록 하는 방법이 있는데요. django-extensions에서 제공하는 runscript 명령어를 사용하면 됩니다.

그러려면 우선 django-extensions를 설치해줍니다.

pip install django-extensions

settings.pydjango-extensions를 추가해줍니다.

# settings.py
...
 
INSTALLED_APPS = [
    ...
    "django_extensions",
]

그다음에 scripts 디렉토리를 생성하여 __init__.py 까지 생성해줍니다. manage.py 와 같은 위치에 만들어 주면 됩니다.

scripts/check_orms.py 라는 이름으로 파일을 만들어봅니다. 이름은 자유롭게 지으면 됩니다.

# check_orms.py
from core.models import Post, Comment
 
def run():
    posts = Post.objects.all()
    print(posts.query)
    comments = Comment.objects.all()
    print(comments.query)
 
  • 실행
python manage.py runscript check_orms
  • 결과
runscript 결과
runscript 결과

마무리

ORM을 shell과 script방식으로 할 수 있는 방법을 알아봤습니다. 개발과 테스트할 때 유용하게 사용하고 있습니다.

Loading...
Loading...