Django day04 - 질의 함수

8691 단어 땅고 베이스.
방향을 바꾸다
여러 가지 방법으로 각종 네트워크 요청을 다른 위치로 방향을 바꾸는 것이다.Django에서는 리디렉션을 위해 Http ResponseRedirect 또는 redirect 모듈을 로드해야 합니다.
from django.http import HttpResponseRedirect
def demo(request):
	return HttpResponseRedirect('/index')

상기 코드는
from djang.shortcuts import redirect
def demo(request):
	return redirect('/index')

필드 속성 및 옵션
Django 설명서 1.8.2를 참조하십시오.https://yiyibooks.cn/xx/django_182/index.html
비null과 blank null은 데이터베이스 범주 개념이고 blank는 백엔드 관리 페이지 폼 검증 범주이다.
주의: 모델 클래스를 수정한 후에 추가된 옵션이 표의 구조에 영향을 주지 않으면 다시 이동할 필요가 없습니다.defalut와 blank는 표 구조에 영향을 주지 않습니다.
1. mysql 로그 시작
1. mysql의 로그 파일을 수정하여 mysql을 생성합니다.log, 즉 mysql의 로그 파일로 MysQL 데이터베이스에 대한 조작 기록을 기록합니다.a) 명령을 사용하여 mysql 프로필을 열고 68, 69 줄의 주석을 제거한 다음 저장합니다.
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

b) mysql 서비스를 다시 시작하면 mysql 로그 파일이 생성됩니다
sudo service mysql restart

c) MySQL 로그 파일 열기
/var/log/mysql/mysql.log

d) mysql 로그 파일을 실시간으로 보기
sudo tail -f /var/log/mysql/mysql.log

2. 질의 함수
Django에서 모델 클래스를 통과합니다.objects 속성은 다음과 같은 함수를 호출하여 모델 클래스에 대응하는 데이터 테이블에 대한 조회를 실현할 수 있습니다. 조회 조건 형식은 모델 클래스 속성 이름 입니다.조건 이름 = 값.참고: 모델 클래스 BookInfo에 대응하는 데이터 테이블의 이름이 BookInfo라고 가정하고 한 테이블의 모든 데이터를 조회하면 모델 클래스입니다.objects.all () 의.all ()는 생략할 수 있습니다.
1)get: 테이블에 조건을 충족시키는 한 개만 되돌려주고 한 개만 되돌려줄 수 있으며 되돌려주는 값은 모델 클래스의 대상이다.
   .objects.get(  )

설명: 매개 변수에 조회 조건을 씁니다.여러 개의 데이터를 조회하면 이상MultipleObjectsReturned를 던집니다.데이터가 질의되지 않으면 예외 DoesNotExist가 발생합니다.
2) all: 모델 클래스가 대응하는 표의 모든 모델 클래스 대상을 되돌려줍니다. 되돌려주는 값은QuerySet 형식(즉 조회 집합 대상)입니다.
   .objects.all()

설명: 되돌아오는 것은 조회 집합의 대상을 두루 훑어볼 수 있습니다.
3) Filter: 조건에 맞는 데이터를 되돌려줍니다. 되돌려주는 값은QuerySet 형식입니다.
   .objects.filter(  )

설명: 매개 변수에 조회 조건을 적습니다.
a) 등급 판정.exact 예: id가 1인 도서 조회 주의: get을 사용합니다. 되돌아오는 데이터가 하나밖에 없기 때문입니다.
BookInfo.objects.get(id__exact=1)
   SQL  :
select * from BookInfo where id=1;

b) 모호한 조회 예: 책 제목에'숲'이 포함된 도서를 조회한다.contains 주의: 여기에 사용되는 Filter는 데이터가 한 개만 되돌아올 수 있기 때문입니다.
BookInfo.objects.filter(btitle__contains='  ')
   SQL  :
select * from BookInfo where btitle like '%  %';

예: 책 제목이'노르웨이'로 끝나는 책을 조회한다.endswich
BookInfo.objects.filter(btitle__endswich='  ')
   SQL  
select * from BookInfo where btitle like '  %';

예: 책 제목이 외로움으로 시작하는 책을 조회한다.startswich
BookInfo.objects.filter(btitle__startswich='  ')
   SQL  
select * from BookInfo where btitle like '%  ';

c) 빈 검색 isnull 예: 책 이름이 비어 있지 않은 책을 검색합니다.
BookInfo.objects.filter(btitle__isnull=False)
   SQL  
select * from BookInfo where btitle is not null;

d) 범위 조회 in 예: id가 1 또는 3 또는 5인 도서를 조회합니다.
BookInfo.objects.filter(btitle__in = [1, 3, 5])
   SQL  
select * from BookInfo where id in (1,3,5);

e) 조회lt, lt, lte, lte는 lt(greate than)보다 크고 lt(less than)는 lte(greate than equal)보다 크고lte(less than equal)보다 작다. 예를 들어 id가 3보다 큰 도서를 조회한다.
BookInfo.objects.filter(id__gt=3)
   SQL  
select * from BookInfo where id>3;

f) 날짜 조회year,month,day 예: 1987년에 발표된 도서를 조회합니다.
BookInfo.objects.filter(bpud_date__year=1987)
   SQL  
select * from BookInfo where bpud_date between 1987-1-1 and 1987-12-31;

예:1월에 발표한 도서를 조회하다.
BookInfo.objects.filter(bpud_date__month=1)
   SQL  
select * from BookInfo where extract (month from BookInfo.bpud_date) = 5;

예:10일 발표된 도서를 조회하다.
BookInfo.objects.filter(bpud_date__day=10)
   SQL  
select * from BookInfo where extract (day from BookInfo.bpud_date) = 10;

예: 1987년 1월 1일 이후 발표된 도서를 조회하다.
BookInfo.objects.filter(bpud_date__gt=date(1987,1,1))
   SQL  
select * from BookInfo where BookInfo.bpud_date>1987-1-1;

4) exclude: 조건에 맞지 않는 데이터를 되돌려줍니다. 되돌려주는 값은QuerySet 형식입니다.
   .objects.exclude(  )

설명: 매개 변수로 조회 조건을 씁니다.
예: id가 3이 아닌 도서를 조회합니다.exclude
BookInfo.objects.exclude(id=3)
   SQL  
select * from BookInfo where id != 3;

5)order_by: 검색 결과를 정렬합니다. 되돌아오는 값은QuerySet 형식입니다.
   .objects.order_by(  )

설명: 매개 변수에 어떤 필드에 따라 정렬되는지 적습니다.
예: 모든 도서의 정보를 조회하고 id에 따라 작은 것부터 큰 것까지 정렬합니다
BookInfo.objects.all().order_dy('id')
   SQL  
select * from BookInfo order by id asc;

예: 모든 도서의 정보를 조회하고 id에 따라 크고 작은 순서로 정렬합니다
BookInfo.objects.all().order_dy('-id')
   SQL  
select * from BookInfo order by id desc;

예: id가 3보다 큰 도서 정보를 조회하고 읽는 양에 따라 큰 것부터 작은 것까지 순서대로
BookInfo.objects.filter(id__gt=3).order_dy('-bread')
   SQL  
select * from BookInfo where id>3 order by bread desc;

3. Q 객체
역할: 검색 시 조건 간의 논리적 관계에 사용되며 Q 대상을 and, or, not로 조작할 수 있습니다.사용하기 전에 가져오기를 수행해야 합니다.
from jango.db.models import Q

예: id가 3 이상이고 30 이상인 도서의 정보 조회 & 대표 및 SQL 문장의 and
BookInfo.objects.filter(id__ge=3, bread__gt=30)
 
BookInfo.objects.filter(Q(id__ge=3) & Q(bread__gt=30))
         SQL  
select * from BookInfo where id>3 and bread>30;

예: id가 3 이상이거나 30 이상인 도서에 대한 정보 조회 | 대표 또는 SQL 문장의 or
BookInfo.objects.filter(Q(id__gt=3) | Q(bread__gt=30))
   SQL  
select * from BookInfo where id>3 or bread>30;

예: id가 3과 같지 않은 도서 정보 조회 ~ 비, 즉 SQL 문장의 not
BookInfo.objects.filter(~ Q(id=3))
   SQL  
select * from BookInfo where not id=3;

4.F 객체
역할: 클래스 속성 간의 비교에 사용됩니다.사용하기 전에 가져오기를 수행해야 합니다.
from django.db.models import F

예: 도서 읽기량이 평론량보다 많은 도서 정보를 조회하다
BookInfo.objects.filter(bread__gt=F('bcomment'))

예: 도서 읽기량이 평론량의 2배 이상인 도서 정보를 조회하다
BookInfo.objects.filter(bread__gt=F('bcomment')*2)

5. 집계 함수
역할: 조회 결과를 집합하여 조작합니다.sum、count、avg、max、min. 이전에는aggregate () 함수를 호출해서 사용해야 하며, 그 반환 값은 사전입니다.사용하기 전에 컬렉션 클래스를 가져와야 합니다.
from django.db.models import Sum, Count, Max, Min, Avg

예: 모든 도서를 조회하는 수량의 반환값은: {'id -count':5}
BookInfo.objects.all().aggregate(Count('id'))
   SQL  
select count(id) as id__count from BookInfo;

예: 모든 도서의 읽기량을 조회하는 총 반환값은 다음과 같다. {'bread sum':126}
BookInfo.objects.all().aggregate(Sum('bread'))
   SQL  
select sum(bread) as bread__sum from BookInfo;

count 함수 작용: 조건을 충족시키는 데이터의 수량을 통계하고 그 반환값은 숫자이다.예: 모든 도서의 수를 통계하다.반환 값: 5
BookInfo.objects.all().count()
   SQL  
select count(*) from BookInfo;

예: id가 3보다 많은 모든 도서의 수량을 통계하고 그 반환값은 다음과 같다.
BookInfo.objects.filter(id__gt=3).count();
   SQL  
select count(*) from BookInfo where id>3

6. 질의 세트(QuerySet)
설명: all, filet, exclude,orderby 등 함수의 호출은 쿼리 세트, 즉QuerySet 형식을 생성합니다.
조회 집합의 특성: 1) 타성 조회: 조회 집합의 데이터를 실제적으로 사용할 때만 데이터베이스에 대한 진정한 조회가 발생한다.2) 캐시: 같은 조회 집합을 사용할 때 첫 번째 때 실제 데이터베이스에 대한 조회가 발생하고 결과를 캐시한 다음에 이 조회 집합을 사용할 때 캐시에 있는 결과를 사용한다.
쿼리 집합 제한: 쿼리 집합의 결과를 제한하기 위해 쿼리 집합을 낙찰하거나 슬라이드할 수 있습니다.쿼리 집합을 슬라이드하면 새로운 쿼리 집합이 생기고, 아래 표시는 마이너스로 허용되지 않습니다.1) 아래 첨자 지정: 객체가 반환됩니다.b[0]가 없으면 IndexError 예외가 발생합니다.
b = BookInfo.objects.all()
b[0]

2) 슬라이스: 새 조회 집합으로 되돌아옵니다.만약 b[0:1].get ()이 존재하지 않습니다. DoseNotExist 예외가 발생합니다.
b = BookInfo.objects.all()
b[0: 1].get()

exists: 쿼리에 데이터가 집중되어 있는지 판단합니다.반환 값은 Boolean 유형(True 또는 False)입니다.True로 되돌아오는 데이터가 있고 False로 되돌아오는 데이터가 없습니다.
b = BookInfo.objects.all()
b.exists()

총결산
get: 있는 데이터만 되돌려줍니다. 되돌려주는 값은 대상이며, 매개 변수는 조회 조건을 쓸 수 있습니다.
all: 모델 클래스에 대응하는 테이블의 모든 데이터를 되돌려줍니다. 되돌려주는 값은QuerySet 형식입니다.
Filter: 조건에 맞는 데이터를 되돌려줍니다. 되돌려주는 값은QuerySet 형식입니다. 매개 변수는 조회 조건을 쓸 수 있습니다.
exclude: 조건에 부합되지 않는 데이터를 되돌려줍니다. 되돌려주는 값은QuerySet 형식입니다. 매개 변수는 조회 조건을 쓸 수 있습니다.
order_by: 검색 결과를 정렬합니다. 반환값은QuerySet 형식입니다. 매개 변수는 한 개 이상의 필드를 정렬합니다.
다음 3가지 방법은 모듈을 먼저 가져와야 합니다. from django.db.models import F, Q, Sum, Count, Avg, Max, Min F 객체: 클래스 속성(즉, 필드) ** 간의 비교에 사용됩니다.
Q 대상: 조건 간의 논리적 관계 (and, or, not) 에 사용됩니다.
aggregate: 집합 작업을 하고 반환 값은 사전입니다.count: 반환 결과는 데이터의 수량을 모으고 반환 값은 숫자입니다.
팁: 반환 값이QuerySet 실례 대상이라면 위의 모든 함수를 계속 사용할 수 있습니다.

좋은 웹페이지 즐겨찾기