Django

[Django] 8. QuerySet API

개발자 뭄뭄 2022. 9. 2. 17:38
반응형

1. ORM


  • Object-Relational-Mapping
  • Django는 python을 사용하고, DB는 SQL을 사용해. ⇒ 중간에 번역하는 역할 : ORM
  • OOP에서 DB를 연동할 때, DB와 OOP간의 호환되지 않는 데이터를 변환하는 프로그래밍 기법.
  • Django는 내장 Django ORM을 사용한다.
  • SQL을 잘 알지 못해도 객체지향 언어로 DB 조작이 가능하다! ⇒ 생산성 이 좋다! 하지만, ORM만으로 완전한 서비스를 구현하기 어려운 경우가 있다.

2. QuerySet API


$ pip install ipython

$ pip install django-extensions

project/settings.py 에서 installed_apps에 “django_extensions”, 를 추가한다.

$ python manage.py shell_plus

# 전체 게시글 다 내놔!
In [1]: Article.objects.all()
Out[1]: <QuerySet []>

  • Query : DB에 특별한 Data를 요청을 보내는 것
  • QuerySet : 자! 네가 요청한 데이터야! 하고 set의 형태로 응답을 보내준다.
    • 순회가능(iterable)
    • 필터, 정렬 등 사용가능
    • 단일 객체 반환 시에는 모델의 인스턴스로 반환

3. CRUD using QuerySet API


  1. CREATE
    # 1
    article = Article()
    article.title = "제목을 작성"
    article.content = "내용을 작성"
    article.save()   # save method를 호출해야 DB에 저장된다.
    
    # 2
    article = Article(title="제목을 작성", content = "내용을 작성")
    article.save()
    
    # 3
    Article.object.create(title="제목을 작성". content="내용을 작성")

  1. READ
    # 1
    Article.objects.all() # 전체 데이터 조회
    
    # 2
    Article.objects.get(pk=1) #pk 처럼 고유성을 보장하는 조회
    
    # 3
    Article.objects.filter(content="dj") # 필터에 해당하는 결과에 따른 queryset 을 반환
    
    # 주의 : filter는 조회결과가 없거나 1개여도 QuerySet을 반환한다

  1. UPDATE
    # update의 순서는 조회 -> update -> 저장
    
    # 1. 조회
    article = Article.objects.get(pk=1)
    # 2. update
    article.title = "수정할 제목"
    # 3. 저장
    article.save()
    
    

  1. DELETE
    # delete의 순서는 조회 -> 삭제
    
    # 1. 조회
    article = Article.objects.get(pk=1)
    # 2. 삭제
    article.delete()


Uploaded by N2T

반응형