ORM
ORM 이란?
- Object-Relational-Mapping
- 객체 지향 프로그래밍 언어를 사용하여 호환되지 않는 유형의 시스템 간에 데이터를 변환하는 기술
- Django에 내장된 ORM이 중간에서 이를 해석
- 데이터베이스 쿼리를 추상화하여 Django 개발자가 데이터베이스와 직접 상호작용하지 않아도 되도록 함
- 데이터 베이스와의 결합도를 낮추고 개발자가 더욱 직관적이고 생산적으로 개발할 수 있도록 도움
QuerySet API
QuerySet API란?
- ORM에서 데이터를 검색, 필터링, 정렬 및 그룹화 하는 데 사용하는 도구
- API를 사용하여 SQL이 아닌 Python 코드로 데이터를 처리
QuerySet API 구문
Query
- 데이터 베이스에 특정한 데이터를 보여 달라는 요청
- 쿼리문을 작성한다
- 원하는 데이터를 얻기 위해 데이터베이스에 요청을 보낼 코드를 작성한다.
- 파이썬으로 작성한 코드가 ORM에 의해 SQL로 변환되어 데이터 베이스에 전달되며, 데이터베이스의 응답 데이터를 ORM이 QuerySet이라는 자료 형태로 변환하여 우리에게 전달
QuerySet
- 데이터베이스에게서 전달 받은 객체 목록(데이터 모음)
- 순회가 가능한 데이터로써 1개 이상의 데이터를 불러와 사용할 수 있음
- Django ORM을 통해 만들어진 자료형
- 단, 데이터베이스가 단일한 객체를 반환 할 때는 QuerySet이 아닌 모델의 인스턴스로 반환됨
- Python의 모델 클래스와 인스턴스를 활용하여 DB에 데이터를 저장, 조회, 수정, 삭제하는 것
라이브러리 환경 구축
pip install ipython
pip install django-extensions
pip freeze > requirements.txt
Django shell
- Django 환경 안에서 실행되는 python shell
python manage.py shell_plus
데이터 객체를 만드는 3가지 방법
1. 특정 테이블에 새로운 행을 추가하여 데이터 추가
article = Article()
article.title = 'first'
article.content = 'django'
article.save()
article.id
article.pk
2. Save 메서드를 호출해야함
article = Article(title='second', content = 'django!')
3. Create() 메서드 활용
Article.objects.create(title='third', content = 'django!'
대표적인 조회메서드
- Return new QuerySets
- Do not return QuerySets
all()
- 전체 데이터 조회
Article.objects.all()
filter()
get()
Delete
데이터 삭제
- 삭제하려는 데이터 조회 후 delete 메서드 호출
article = Article.objects.get(pk = 1)
article.delete()