Django에서 mysql 데이터베이스 삭제

12341 단어 Django
1. 추가 1)save: 모델 클래스의 대상을 만들고 실행 대상의save() 방법을 데이터베이스에 저장합니다.예를 들면 다음과 같습니다.
In [1]: from demo_class.models import BookInfo
In [2]: from datetime import date
In [3]: from demo_class.models import HeroInfo
In [4]: book = BookInfo(btitle = 'wang',bpub_date = date(1990,10,10))
In [5]: book.save()

2)create(): 모델 클래스를 통과합니다.objects.create()가 저장됩니다.
In [11]: HeroInfo.objects.create(
    ...: hname = '   ',
    ...: hgender = 0,
    ...: hbook = book
    ...: )
Out[11]: 

2. 조회 1.기본 질의
all 방법은 모든 데이터를 되돌려줍니다
In [12]: BookInfo.objects.all()
Out[12]: <QuerySet [<BookInfo:      >, <BookInfo:     >, <BookInfo:     >    >, <BookInfo:    >, <BookInfo: wang>, <BookInfo: wang>]>

get 조회 단일 결과, 존재하지 않으면 모델 클래스를 던집니다.DoesNotExist 예외.
In [13]: BookInfo.objects.get(id = 3)
Out[13]: 
In [14]: BookInfo.objects.get(id = 100)
DoesNotExist: BookInfo matching query does not exist.

count 조회 결과 수량.
In [15]: BookInfo.objects.count()
Out[15]: 7

2. 질의 필터링
*filter 여러 결과 필터링 exclude 조건에 부합되는 나머지 결과 get 필터 단일 결과 제거 * 필터 조건의 표현 문법은 다음과 같습니다: ** 속성 이름비교 연산자 = 값 속성 이름과 비교 연산자 사이에 두 개의 밑줄을 사용하기 때문에 속성 이름에 여러 개의 밑줄을 포함할 수 없습니다.**
필터 조건의 사용에 대해 상술한 세 가지 방법은 같기 때문에 필터로만 설명한다.
In [17]: BookInfo.objects.filter(id__in = [1,2,3,4])
Out[17]: , ,     >]>

1) 상등exact: 판정 등을 나타낸다.예: 번호 2의 도서를 조회하다.
BookInfo.objects.filter(id__exact=2)
#     :
BookInfo.objects.filter(id=1)

2) 모호한 조회contains: 포함 여부.설명:% 를 포함하려면 전의가 필요 없으면 바로 쓰면 됩니다.예: 책 제목에'전'이 포함된 도서를 조회하다.
BookInfo.objects.filter(btitle__contains=' ')

startswith, endswith: 지정된 값으로 시작하거나 끝냅니다.예: 책 제목이'부'로 끝나는 책을 조회하다
BookInfo.objects.filter(btitle__endswith=' ')

상기 연산자는 모두 대소문자를 구분하는데 이 연산자 앞에 i를 더하면 대소문자를 구분하지 않는다는 뜻이다. 예를 들어iexact,icontains,istartswith,iendswith.
3) 빈 조회 isnull: null인지 여부입니다.예: 책 이름이 비어 있지 않은 책을 조회하다.
BookInfo.objects.filter(btitle__isnull=False)

4) 범위 조회 in: 범위에 포함할지 여부.예: 조회 번호가 1 또는 3 또는 5인 도서
BookInfo.objects.filter(id__in=[1, 3, 5])

5) 비교 쿼리lt가 (greater then) gte보다 크거나 같음(greater then equal) lt보다 작음(less then) lt보다 작음(less then equal) 예: 쿼리 번호가 3보다 큰 도서
BookInfo.objects.filter(id__gt=3)

exclude () 필터를 사용하는 것과 같지 않은 연산자조회 번호가 3이 아닌 도서
BookInfo.objects.exclude(id=3)

6) 일자 조회 year,month,day,weekday,hour,minute,second: 날짜 시간 형식의 속성을 연산합니다.예: 1980년에 발표된 도서를 조회하다.
BookInfo.objects.filter(bpub_date__year=1980)

예: 1980년 1월 1일 이후 발표된 도서를 조회하다.
BookInfo.objects.filter(bpub_date__gt=date(1990, 1, 1))

3. F 대상은 F 대상을 사용하여 두 속성을 비교하고django.db.models의 문법은 다음과 같습니다: F (속성명) 예: 댓글보다 읽는 양이 많은 도서를 조회합니다
from django.db.models import F
#           
BookInfo.objects.filter(bread__gte=F('bcomment'))

F 객체에서 산수 연산BookInfo.objects.filter(bread__gt=F('bcomment') * 2)을 사용할 수 있습니다.Q 대상의 여러 필터가 하나씩 호출되어 논리와 관계를 나타낸다. sql 문장의where 부분과 같은 and 키워드 예: 조회 읽기량이 20보다 많고 번호가 3보다 적은 도서
BookInfo.objects.filter(bread__gt=20,id__lt=3)
#  
BookInfo.objects.filter(bread__gt=20).filter(id__lt=3)

논리적 또는 or의 조회를 실현하려면 Q() 대상 결합 | 연산자를 사용해야 하며 Q 대상은django에 의거된다.db.models에서구문은 다음과 같습니다.Q(속성명 연산자=값) 예: 20보다 많은 도서를 조회하고 Q 대상으로 바꾸면 다음과 같다.
from django.db.models import Q
BookInfo.objects.filter(Q(bread__gt=20))

Q 대상은 &, | 연결, & 논리 및 표시를 사용할 수 있습니다. | 표시 또는, ~ 표시 비예: 조회 읽기량이 20보다 많거나 번호가 3보다 적은 도서는 Q 대상으로만 가능합니다.
#   id=1,2,3** **      
BookInfo.objects.filter(Q(id__in = [1,2,3]) | Q(btitle = '   '))

조회 번호가 3이 아닌 도서
BookInfo.objects.filter(~Q(pk=3))

5. 집합 함수는aggregate() 필터를 사용하여 집합 함수를 호출합니다. 예: 도서의 총 읽기량을 조회합니다.
In [14]: from django.db.models import Sum
In [15]:BookInfo.objects.aggregate(Sum('bread'))
Out[15]: {'bread__sum': 136}
#       

6. 정렬
BookInfo.objects.all().order_by('bread')  #   
BookInfo.objects.all().order_by('-bread')  #   

7. 관련 조회 일대다: 대응하는 모델 유형의 대상.다중 대응하는 모델 클래스 이름 소문자set 예:
#   id 1            
b = BookInfo.objects.get(id=1)
b.heroinfo_set.all()

다대일로 대응하는 모델 유형의 대상.다중 대응 모델 클래스의 관계 클래스 속성 예:
h = HeroInfo.objects.get(id=1)
h.hbook

대응하는 모델 클래스 관련 대상에 접근하는 id 문법: 대응하는 모델 클래스 대상입니다.연관 클래스 속성id 예:
h = HeroInfo.objects.get(id=1)
h.hbook_id

연관 필터 질의 연관 모델 클래스 이름 소문자속성명조건 연산자 = 값이 없는 경우연산자 부분은 도서 중의'손오공'이름이 있는 도서의 명칭을 조회하는 것과 같다는 것을 나타낸다
BookInfo.objects.filter(heroinfo__hname='   ')

조회서 이름은'천룡팔부'중의 모든 영웅이다.
HeroInfo.objects.filter(hbook__btitle='    ')

3. 수정 수정 업데이트는 두 가지 방법이 있다. 1)save는 모델 클래스 대상의 속성을 수정한 다음에save() 방법을 실행한다.
hero = HeroInfo.objects.get(hname='   ')
hero.hname = '   '
hero.save()

2) 업데이트는 모델 클래스를 사용합니다.objects.filter().업데이트 (), 영향을 받은 줄 수를 되돌려줍니다
HeroInfo.objects.filter(hname='   ').update(hname='  ')

삭제, 삭제에는 두 가지 방법이 있습니다.
1) 모델 클래스 개체 delete
hero = HeroInfo.objects.get(id=13)
hero.delete()

2) 모델 클래스.objects.filter().delete()
HeroInfo.objects.filter(id=14).delete()

참고: 실제 개발에서는 일반적으로 이런 물리적 삭제를 사용하지 않고 논리적 삭제를 자주 사용합니다. 예를 들어 다음과 같습니다.
book = BookInfo.objects.get(id =1 )
book.is_delete = True
book.save()

좋은 웹페이지 즐겨찾기