본문 바로가기
Programming

Django QuerySet manager objects Filter, All , Value

by 하하호호 2021. 10. 12.
반응형

Django에서는 SQL문을 사용할 때 django ORM을

사용한다. ORM(Object-Relational Mapping)의

약자로, 객체와 관계형 데이터베이스의 데이터를

매핑해주는 기능을 한다.

 

관계형 데이터베이스를 생성, 업데이트, 검색하는데

객체지향 프로그램에서 사용하는 객체처럼 DB를

사용하도록 도와준다. 

 

Django ORM에서 핵심적인 인스턴스 매니저 역할을

담당하고 있는 것이 Objects다.

 

Django에는 QuerySet 기능을 지원한다.

SQL문을 자동으로 생성해주는 모델링 부터

쿼리 검색과 CRUD기능을 지원하고 있다.

 

Objects는 쿼리셋을 위한 인스턴스 매니저다.

Objects를 사용해서 쿼리를 생성하고, 

필터링, 값을 얻어올 수도 있다.

 

1. Class.Objects.values()

기본값 : 리스트[딕셔너리]

.values()는 쿼리셋값을 딕셔너리로 가져온다.

기본적으로 QuerySet()이 리스트 형식이기

때문에, 리스트 안에 딕셔너리가 담긴 형태로

값을 반환한다.

 

출력값은 QuerySet[{'key':'value'},{'key':'value'}]

형태로 출력한다.

 

<입력값>

<출력값>

 

2. Class.objects.values_list()

기본값 : 리스트

values_list() 함수는 values()가 딕셔너리를 반환하는 반면,

리스트 형식으로 데이터를 반환한다. 

 

<입력값>

 

출력값에서 value()와는 다르게 리스트형식으로 

query를 반환하고 있는 것을 볼 수 있다.

 

<출력값>

 

3. Class.objects.get(id=1)

 

get() 함수는 딕셔너리의 한가지 요소를 반환한다.

객체가 하나만 반환되기 때문에, dot notations으로

해당 value에 접근이 가능하다.

 

해당 조건에 해당하는 value를 찾지 못하는 경우

DoesNotExist Exception을 반환한다.

여러개의 value가 반환되면

MulipleObjectsReturned Exception을 반환한다.

 

<입력값>

<출력값>

 

새로운 쿼리를 생성하고,

id를 조건값으로 get()을 실행하면,

Class object(id값)을 반환하고 있다.

 

반환값의 type을 확인해보니

objet형태로 반환하고 있다.

 

개별값을 조회하면 다음 결과를

얻을 수 있다.

 

4. Class.objects.filter()

filter() 함수는 조건값에 따라서 query를 검색한다.

결과는 리스트로 반환한다.

 

특정 값에 접근하기 위해서는 

<variables>[index] 형태로 접근이 가능하다.

 

SQL문

SELECT * From Database
WHERE query='abc';

 

filter()에서는 exits() 함수를 로직에서 사용한다.

실제로 쿼리가 존재하는지 boolean값을 얻는데,

유용하게 사용된다.

<입력값>

<출력값>

 

<입력값>

<출력값>

5. Class.objects.all()

all() 함수는 데이터베이스내 존재하는 

모든 쿼리를 가져온다.

 

결과값은 list로 가져오게 되어있다.

따라서 특정값에 접근하기 위해서는

list 형식으로 값을 가져오 올 수 있다.

 

SQL문 :

 SELECT * FROM database;

 

<입력값>

<출력값>

 

반응형

댓글