장고 시작하기 9. 장고 ORM 개념, 장고 Shell에서 테스트하기

장고 ORM (Object-Relational Mapping)은 개발자가 Python 객체를 사용하여 데이터베이스와 상호 작용할 수 있게 해주는 기능으로, SQL 쿼리를 직접 작성하지 않아도 단순하게 DB 작업을 할 수 있게 만들어 줍니다.

Model과 ORM의 차이

장고에서 모델은 데이터베이스 테이블을 나타내고 해당 필드와 동작을 정의하는 Python 클래스입니다.

ORM(Object-Relational Mapping)은 개발자가 원시 SQL 쿼리 대신 상위 수준 Python 개체를 사용하여 데이터베이스와 상호 작용할 수 있도록 하는 기술입니다.

정리하자면, Model이 데이터베이스의 구조를 정의하는 반면 ORM은 Python 코드와 기본 데이터베이스 간의 원활한 통신을 가능하게 해줍니다.

실질적인 DB 상호작용은 ORM이 도와주는 거죠. 어떻게 보면 MVT가 아니라 OVT가 아닌가 싶습니다. ㅎ

장고 ORM의 장단점

장점

추상화: ORM은 데이터베이스 상호 작용의 세부 사항을 추상화하여 개발자가 SQL 쿼리가 아닌 Python 코드 작성에 집중할 수 있도록 합니다.

이식성: ORM을 사용하면 개발자가 다양한 데이터베이스 백엔드에서 작동하는 데이터베이스에 구애받지 않는 코드를 작성할 수 있으므로 다양한 데이터베이스 시스템에서 애플리케이션의 이식성이 향상됩니다.

단점

성능 오버헤드: ORM은 복잡한 작업이나 대규모 데이터 세트를 처리할 때 직접 작성한 SQL 쿼리에 비해 성능 오버헤드를 유발할 수 있습니다.

Django Shell

위에서 말씀드린 것 처럼 ORM은 파이썬 객체를 통해서 DB와 상호작용하게 만들어주는 기능이 있습니다.

이 기능은 대부분 views.py에서 이루어지는데요.

장고의 코드는 건들지 않고 이 ORM 기능을 우선 테스트하고 실험할 수 있는 도구가 있습니다. 바로 Django Shell이죠.

Django Shell은 Django 애플리케이션 코드를 대화형으로 테스트하고 실험할 수 있는 공간입니다.

파이썬을 테스트 하기 위해서 사용한 환경인 터미널 환경과 유사하다고 보면 될 것 같습니다.

Django에서 제공하는 CLI로 애플리케이션 모델에 액세스하고, Python 명령을 실행하고, 즉각적인 결과를 확인할 수 있게 해주는 편리한 도구인거죠

다음 명령어를 입력하면 Django shell을 이용할 수 있습니다.

python manage.py shell


이제 ORM을 사용할 준비는 거의 끝났습니다.

그전에 ORM 테스트 환경인 Django shell 을 편리하게 조금 더 업그레이드 해보겠습니다.

Django Shell 작업을 도와주는 도구들

기초적인 Django Shell은 자동완성도 되지 않으며, 출력 화면도 너무 투박합니다. 이를 개선할 수 있게 해주는 도구들이 몇 가지 있습니다.

ipython

자동완성, 코드 색상 강조 등 여러가지 기능 제공

pip install ipython

django-extension

기본 shell 보다 더 많은 기능이 있는 shell_plus 제공

pip install django-extensions

이런 도구들을 실제 사용하기 위해서는 django에 settings.py 설정을 변경해줘야 합니다.

pip 이름은 django-extensions (하이픈 연결)이지만 django settings에 설정해줄 때는 django_extensions (언더바 연결)임에 유의해야 합니다.

# Application definition

CUSTOM_APPS = [
    'articles',
    'users',
]
SYSTEM_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django_extensions',
]

INSTALLED_APPS = CUSTOM_APPS + SYSTEM_APPS

설치가 완료되면 이제 shell 말고 shell_plus로 쉘을 실행할 수 있습니다.

python manage.py shell_plus

자동으로 자주 사용되는 클래스들을 import해주고 색상도 추가된 것을 확인 할 수 있습니다.

참고하면 좋은 글

https://djangocentral.com/django-orm-cheatsheet/

Setting up Django ORM (inspector.dev)

https://atharvashah.netlify.app/posts/tech/django-orm-exercises/

Leave a Comment

목차