单表操作详细

  • 数据库迁移

    python3 manage.py makemigrations   --->只是对变化做一个记录,记录文件在app的migrations
    
    python3 manage.py migrate   ---->把更改提交到数据库
    
    python3 manage.py showmigrations  ---->查看那个没有提交到数据库
    没迁移显示'[ ]'
    迁移的显示'[X]'
    
  • 查看操作的sql语句

    book = Book.objects.all()
    print(book.query)
    
  • 查询API

    <1> all():                  查询所有结果
    
    <2> filter(**kwargs):       它包含了与所给筛选条件相匹配的对象
    
    <3> get(**kwargs):          返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。 
    
    <4> exclude(**kwargs):      它包含了与所给筛选条件不匹配的对象 
    
    <5> order_by(*field):       对查询结果排序('-id')     
    
    <6> reverse():              对查询结果反向排序 
    
    <8> count():                返回数据库中匹配查询(QuerySet)的对象数量。
    
    <9> first():                返回第一条记录     
    
    <10> last():                返回最后一条记录  
    
    <11> exists():              如果QuerySet包含数据,就返回True,否则返回False   
    
    <12> values(*field):        返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列
    model的实例化对象,而是一个可迭代的字典序列
    
    <13> values_list(*field):   它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列            
    
    <14> distinct():            从返回结果中剔除重复纪录
    
  • 基于双下划线的模糊查询

    Book.objects.filter(price__in=[100,200,300])---in不in这个列表
    
    Book.objects.filter(price__gt=100)-------------查询大于100
    
    Book.objects.filter(price__lt=100)-------------查询小于100
    
    Book.objects.filter(price__gte=100)------------大于等于100
    
    Book.objects.filter(price__lte=100)------------小于等于100
    
    Book.objects.filter(price__range=[100,200])----100(包含)到200(包含)之间
    
    Book.objects.filter(title__contains="p")-------包含'p'的 = sql的like %p% 
    
    Book.objects.filter(title__icontains="P")------包含'p'或'P'的, 不区分大小写
    
    Book.objects.filter(title__startswith="py")----'py'开头的
    
    Book.objects.filter(pub_date__year=2012)-------2012年出版的
    

你可能感兴趣的:(单表操作详细)