django 데이터베이스 추가,수정,삭제 작업

21677 단어 python
데이터베이스 조작
  • 다음 명령 을 통 해 셸 python3 manage.py shell
  • 에 들 어 갑 니 다.
  • 두 모델 류 를 가 져 와 from books.models import BookInfo,HeroInfo
  • 을 추가 로 사용 할 수 있 도록 합 니 다.
  • 추가 저장 방법
    >>> from datetime import date
    >>> book = BookInfo(
    ... btitle='   ',
    ... bpub_date=date(2000,2,2),
    ... bread=10,
    ... bcomment=10
    ... )
    >>> book.save()
    
    >>> hero = HeroInfo(
    ... hname='   ',
    ... hgender=160,
    ... hbook=book
    ... )
    >>> hero.save()
    
    >>> hero2 = HeroInfo(
    ... hname='   ',
    ... hgender=150,
    ... hbook_id=book.id
    ... )
    >>> hero2.save()
    
    Create 방법
    >>> HeroInfo.objects.create(
    ... hname='   ',
    ... hgender=140,
    ... hbook=book
    ... )
    <HeroInfo:    >
    
  • 수정 업데이트 에는 두 가지 방법 이 있다.
  • save 는 모델 류 대상 의 속성 을 수정 한 다음 에 save 방법
    hero = HeroInfo.objects.get(hname='   ')
    hero.hname = '   '
    hero.save()
    
  • 을 실행 합 니 다.
  • update 는 모델 류.objects.filter().update()를 사용 하여 영향 을 받 은 줄 수
    HeroInfo.objects.filter(hname='   ').update(hname='  ')
    
  • 을 되 돌려 줍 니 다.
  • 삭제 에는 두 가지 방법 이 있 습 니 다.
  • 모델 클래스 대상 delete
    hero = HerInfo.objects.get(id=12)
    hero.save()
    
  • 모델 클래스.objects.filter().delete()
    hero = HerInfo.objects.filter(id=13).delete()
    
  • 조회
  • get 조회 단일 결과 가 존재 하지 않 으 면 모델 류.Does NotExist 이상 을 던 집 니 다.
  • all 조회 여러 결과
  • count 조회 결과 수량
    >>> from books.models import BookInfo,HeroInfo
    >>> BookInfo.objects.all()
    <QuerySet [<BookInfo:      >, <BookInfo:     >, <BookInfo:     >, <BookInfo:     >, <BookInfo:    >]>
    >>> book = BookInfo.objects.get(btitle='   ')
    >>> book.id
    5
    >>> BookInfo.objects.get(id=3)
    <BookInfo:     >
    >>> BookInfo.objects.get(pk=3)
    <BookInfo:     >
    
  • 필터 조 회 는 SQL 의 where 기능 을 실현 합 니 다.
  • filter 여러 결 과 를 걸 러 냈 습 니 다
  • exclude 조건 에 맞 는 나머지 를 제외 한 결과
  • get 여과 단일 결과
  • 필터 조건 의 사용 에 있어 상기 세 가지 방법 이 같 기 때문에 필터 로 만 필터 조건 을 설명 하 는 표현 문법 은 다음 과 같다.
  •     __     = 
    #                   ,              
    

  • 동일 exact:판정 등 을 표시 합 니 다.예:조회 번호 가 1 인 도서
    BookInfo.objects.filter(id__exact=1)
    
    #    :
    BookInfo.objects.filter(id=1)
    
  • 모호 조회 contains:포함 여부`설명:%를 포함 하려 면 전의 가 필요 없 이 직접 쓰 면 됩 니 다.예:'전'을 포함 한 도서
    BookInfo.objects.filter(btitle__contains=' ')
    
    startswith,endswith:지정 치 로 시작 하거나 끝 나 는 예:책 이름 을'부'로 끝 나 는 도서
    BookInfo.objects.filter(btitle__endswith=' ')
    
    : , i , iexact、icontains、istartswith、iendswith.
  • 빈 검색 isnull:null 예 여부:책 이름 이 비어 있 지 않 은 도 서 를 조회 합 니 다.
    BookInfo.objects.filter(btitle_isnull=False)
    
  • 범위 조회 in:범위 내 에 포함 되 어 있 는 지 여부.예:조회 번호 가 1 또는 3 또는 5 인 도서
    BookInfo.objects.filter(id__in=[1,3,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)
    
  • 날짜 조회 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))
    
  • F 대상 이전의 조 회 는 모두 대상 의 속성 과 상수 치 를 비교 하 는데 두 속성 을 어떻게 비교 합 니까?답:F 대상 을 사용 하여 Django.db.models 로 정의 합 니 다.문법 은 다음 과 같다.
    F(   )
    
    예:조회 독 서량 이 평 론 량 보다 많은 도서
    from django.db.models.import F
    
    BookInfo.objects.filter(bread__gte=F('bcomment'))
    
    은 F 대상 에서 산수 연산 예 를 사용 할 수 있다.조회 독 서량 이 2 배 이상 인 도서
    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 보다 많 고 번호 가 3 보다 작은 도 서 는 Q 대상 으로 다음 과 같다.
    from django.db.models import Q
    
    BookInfo.objects.filter(Q(bread__gt=20)|Q(id__lt=3))
    
    Q 대상 은&,|연결 을 사용 할 수 있 습 니 다.&논리 와,|논리 또는.예:조회 독 서량 이 20 이상 이거 나 번호 가 3 이하 인 도 서 는 Q 대상 이
    BookInfo.objects.filter(Q(bread__gt=20) | Q(pk__lt=3))
    
    Q 대상 을 실현 하기 전에~조작 부호 만 사용 할 수 있 으 며,not 임 을 나타 낸다.예:조회 번호 가 3 과 다른 도서.
    BookInfo.objects.filter(~Q(pk=3))
    

  • 중합 함수

    좋은 웹페이지 즐겨찾기