장고 튜토리얼2 - QuerySetAPI

김민정·2022년 6월 12일
0

장고

목록 보기
2/2

-Movie.objects.all()
-Movie.objects.filter(필드명='값')
-Movie.objects.filter(필드명="값").values() - 딕셔너리 포함한 값들로 반환
-Movie.object.filter(필드값="값").value_list() - 튜플로 반환
-Movie.objects.create(필드명="값") - 추가
-Movie.objects.get(필드명="값") - 조회
-Movie.objects.update(필드명="값") - 업데이트 (반환 값은 행수)
-Movie(필드명="값").save() - 똑같은 값이 없으면 추가고 있으면 update됨
-Movie.objects.filter(필드명="값").delete() -삭제
-Movie.objects.filter(필드명="값").exists() - 있는지 확인
-Movie.objects.exclude(조건) - 조건에 해당되지 않는지 확인
-Movie.reverse()[:5] - 바꾸기
-distinct() ->
sql 문 -> SELECT DISTINCT item FROM tables ;
objects 쿼리 -> Movies.objects.filter(item=itme).values_list('shared_note', flat=True).distinct()
-여기서 flat=True는 딕셔너리로 바꿔줄수 있는 조건입니다.
-Movie.objects.order_by()
-where/tables
sql문 -> select * FROM blog_entry where(foo='a' OR bar='a') And(baz='a')
objects 쿼리-> Entry.objects.extra(where=["foo='a' OR bar='a'", baz='a'"])
-selected_related와 prefetch_related
1. selected_related -> 구하려는 객체가 역참조하는 single object(one-to-one, many-to-one)이거나 또는 정참조 foreign key일때 사용한다.
2. prefetch_related ->구하려는 객체가 정참조 multiple objects(many-to-many, one-to-many, 역참조 Foreign Key)
-ㄹㅁ

*쿼리셋 필터와 관련해서 필터링한 쿼리셋을 다시 쿼리셋으로 필터하려고 하면 문제가 생긴다. 이경우 in(sql문에서의 where in)필요ct_id=object).values('id')
movie_user(
in=>필요)=Movie.objects.filter( movie_id__in=group,).values('movie_id')
하나의 필드만 가져와야 한다

피클링과 캐싱
1.피클링은 일반적으로 캐싱의 전조로 사용되며 캐시된 쿼리 세트를 다시 로드할 때 결과가 이미 존재하여 사용할 준비가 되어 있어야 합니다라는 말은 무슨 말입니까?
https://code-examples.net/ko/q/38ad0a
이게 관련된 내용인지 잘 모르겠음
2. 피클링(파이썬의 모듈)은 보안에 취약한데 왜 사용합니까?
-리스트, 딕셔너리 파일을 그대로 저장해야 할때 pickled을 사용하면 용량이 매우 작아진다라고 함 하지만 보통 보안이나 활용성을 위해 json을 사용하는데 json으로 받은 데이터를 거를때 번거로우면서 보안상 별로안 중요하다고 여기는 데이터를 pickle로 처리한 예
https://vixxcode.tistory.com/223
3. 캐시란 무엇입니까?
데이터베이스까지 콜이 들어가지 않도록 하는 것을 이야기합니다.
3-1. 데이터베이스까지 콜이 들어가지 않는 다는 건 무슨 말입니까? 여기서 콜은 시스템 콜을 말하는 건가요?
ex) 수많은 사용자들이 한꺼번에 쿼리를 날린다 -> 뷰에서 쿼리를 보내면 db에 셀렉트를 한다 -> db가 부화를 받을 가능성이 높다-> 캐시가 필요하다
3-2. 캐시 메모리 - 원래 메모리에 있었던 데이터를 빨리 사용하기 위해서 데이터의 일부를 cpu내에 캐시에서 사용한다.
3-3. 캐시 파일 - 웹서버와 클라이언트 사이에서 http통신을 하면서 브라우저에 html에 있는 이미지들을 저장할 수 있다. 이렇게 저장되어 있는 파일들을 캐시 파일이라고 한다.
3-4. CDN - 웹서버와 클라이언트 사이의 다른 로컬 서버에 파일들을 저장해두고 빠른 속도로 응답을 받게 하는 용도로 사용하는 기술
장고에서는 Django’s cache framework를 사용한다.
(추후 세션에서 진행 예정)

-repr() - 파이썬에서 문자열로 객체를 다시 생성하기 위한 내장함수
-len() -결과 목록의 길이
-sql where문(django query object 중 filter(), exclude(), get())과 관련된 상세조건
1. exact - 정확한 값
sql문 - select Movie where id=14;
object쿼리 - Movie.objects.get(필드명exact=14)
2.isexact -대소문자를 구분하지 않고 일치여부
sql문 - select Movie where name ilike 'beatles blog';
objects쿼리 -Movie.objects.get(name
iexact='beatles blog')
3. contains - 대소문자 구분, icontains - 대소문자 미구분
sql문 - select Movie where headline Like '%Lennon%')
objects쿼리 -Movie.objects.get(headlinecontains='Lennon')
4. in - 목록 튜플 또는 쿼리 집합
sql문 - select Movie where id In (1,3,4);
objects쿼리 - Movie.objects.filter(id
in=[1,3,4])
5. gt - 초과 gte - 이상
sql문 - select Movie where id>(>=)4;
object쿼리 - Movie.objects.filter(idgt(or gte)=4)
6. lt - 미만 lte - 이하
sql문 - select Movie where id<(<=)4;
objects 쿼리 - Movie.objects.filter(id
lt(or lte)=4)
7. startswith - 대소문자 구분하면서 시작하는 쪽에 해당, isstartswith - 대소문자 구분하지 않으면서 시작하는 쪽에 해당
sql문 - select Movie where headline like 'Lennon%';
objects쿼리 - Movie.objects.filter(headlinestartswith='Lennon')
8. endswith, iendswith - 대소문자 구분하면서 끝나는 쪽에 해당, 대소문자 구분하지 않으면서 끝나는 쪽에 해당
sql문 - select Movie where headline like(ILike) '%Lennon'
objects쿼리 - Movie.objects.filter(headline
endswith='Lennon')
9. range - 범위
sql문 - SELECT Movie WHERE pub_Date Between '날짜' and '날짜';
object쿼리 - Entry.objects.filter(pub_daterange=(start_date,end_date))
10. 날짜 관련되서
sql문 -SELECT Movie WHERE EXTRACT('day'('year','month','week','hour','minute', 'second' FROM timestamp)>='숫자';
objects쿼리 - Movies.objects.filter(timestamp
minutes__gte=29)

0개의 댓글