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 실례 대상이라면 위의 모든 함수를 계속 사용할 수 있습니다.