반응형

참고

https://tutorial.djangogirls.org/ko/django_orm/


ORM(Object Relational Mapping)이란?

객체 관계 매핑은 데이터베이스와 객체 지향 프로그래밍 언어 간의 호환되지 않는 데이터를 변환하는 프로그래밍 기법이다.


기존 데이터베이스를 이용할려면 직접 쿼리를 보내고 데이터를 받아오거나 저장해야 됬습니다. 장고에서는 이런부분들을 조금 더 간단하게 파이썬으로 이용할 수 있도록 하였습니다.



DB 데이터 조회


terminal창에서 입력(장고쉘 활용)

1
python manage.py shell
cs

실행하면 장고 인터랙티브 콘솔로 들어가게 됩니다.(이번장에서  인터랙티브 콘솔에서 작업합니다.)

파이썬 프롬프트와 비슷하지만,장고의 여러가지 기능들을 사용할수 있게됩니다.

파이썬의 모든 명령어를 사용할 수 있습니다.


1
2
3
from blog.models import Post
 
Post.objects.all()
cs


blog.models을 불러와서 데이터베이스에 담긴 데이터를 조회할 수 있습니다.



DB에 데이터 추가(Post추가해보기)


먼저 Post에는 User 객체에 포함되어있는 author가 필요합니다.

User객체를 먼저 조회해서 알아낸 뒤 Post를 추가해봅시다.


계속 인터랙티브 콘솔에 입력해 봅시다.


User객체 조회


1
2
3
from django.contrib.auth.models import User
 
 User.objects.all()
cs


우리가 만든 슈퍼계정을 볼수 있습니다.


조회한 사용자의 인스턴스를 me에 저장하고 Post를 추가해 봅시다.


Post추가

1
2
me = User.objects.get(username='username')
Post.objects.create(author=me, title='Sample title', text='Test')
cs

아래 조회를 테스트하기위해 title과 text를 바꿔서 여러개 추가해 둡시다.


Post 확인

1
Post.objects.all()
cs


특정 데이터 조회

데이터 베이스에는 필요한 데이터만을 불러올 수 있습니다.
django에서도 그런기능이 제공됩니다.

where절을 대신할수 있는 filter기능 사용해 봅시다.

author가 me인 글 조회하기
1
Post.objects.filter(author=me)
cs

title에 title이라는 글자가 들어간 글만 조회하기(title과 contain사이의 _(1개)는 __(2개)입니다.)
1
Post.objects.filter(title__contains='title')
cs

정렬하여 가져오기(시간순으로 가져오기)
1
Post.objects.order_by('created_date')
cs

정렬하여 가져오기(내림차순 시간순으로 가져오기(보통 사이트는 이걸 많이사용함))
1
Post.objects.order_by('-created_date')
cs

앞에 -만 붙여주면 된다. DB를 사용해보신 분들은 조금더 간단하고 직관적이라는것을 느낄것이다.


쿼리셋 연결(chaining)하기

쿼리셋들을 연결하여 원하는 데이터를 원하는 형태로 받아올 수 있습니다.


1
Post.objects.filter(title__contains='title').order_by('-created_date')
cs
이런식으로 응용이 가능합니다.



장고쉘 종료

1
exit()
cs



반응형

'웹개발 > Django' 카테고리의 다른 글

Django 웹디자인(CSS) #7  (0) 2020.12.13
Django 템플릿 동적데이터 #6  (0) 2020.12.13
Django urls #4  (0) 2020.12.13
Django 배포해보기 #3  (0) 2020.12.12
Django 객체생성(블로그) #2  (0) 2020.12.12
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기