zoukankan      html  css  js  c++  java
  • Django模型层相关

    ORM 查询

    查看执行查询时的sql语句

    1. 如果是queryset对象 可以直接 .query 查看

    2. 配置文件中 直接配置

      LOGGING = {
          'version': 1,
          'disable_existing_loggers': False,
          'handlers': {
              'console': {
                  'level': 'DEBUG',
                  'class': 'logging.StreamHandler',
              },
          },
          'loggers': {
              'django.db.backends': {
                  'handlers': ['console'],
                  'propagate': True,
                  'level': 'DEBUG',
              },
          }}
              
      

    django测试环境的搭建

    在test.py文件下:

    import os 
        
     
    if __name__ == "__main__":
            os.environ.setdefault("DJANGO_SETTINGS_MODULE", "one_search.settings")
            import django
            django.setup()
            # 你就可以在下面测试django任何的py文件
            #注意,如果需要导入,必须在下面导入
    

    单表查询

    必知必会十三条

    # 必知必会十三条
    # 1.all()
    # res=models.books.objects.all()
    # print(res)
    
    # 2.filter()                  QuerySet
    # res=models.books.objects.filter(name='b3')
    # print(res)
    
    # 3.get()                    数据对象本身,如取到多个对象会报错
    # res=models.books.objects.get(name='b2')
    # print(res)
    
    # 4.first()     拿第一个
    # res=models.books.objects.filter(publisher=2)
    # print(res.first())
    
    # 5. last()     拿最后一个
    # res = models.books.objects.filter(publisher=2)
    # print(res.last())
    
    # 6.exclude  除此之外        QuerySet
    # res=models.books.objects.exclude(publisher=2)
    # print(res)
    
    # 7.values  QuerySet    列表套字典
    # res=models.books.objects.values('name','price')
    # print(res)
    
    # 8.values_list  QuerySet    列表套元组
    # res = models.books.objects.values_list('name','price','publisher_id')
    # print(res)
    
    # 9.count()  统计数据的个数
    
    # 10.distinct() 去重
    """去重:数据必须是一模一样的情况下才能去重"""
    
    # 11.order_by()
    # res = models.Book.objects.order_by('price')  # 默认是升序
    # # res1 = models.Book.objects.order_by('-price')  # 加负号就是降序
    # print(res)
    # 12.reverse()  前面必须是先结果排序才可以反转
    # res = models.Book.objects.order_by('price').reverse()
    # print(res)
    # 13.exists()  一点卵用没有
    # res = models.Book.objects.filter(pk=1).exists()
    # print(res)
    
    

    神奇的__查询

        # 神奇的__查询
        #  字段__lt >>>> 小于
        # res=models.books.objects.filter(price__lt=20)
        # print(res)
    
        #  字段__gt >>>> 大于
        # res=models.books.objects.filter(price__gt=20)
        # print(res)
    
        #  字段__lte >>>> 小于等于
        #  字段__gte >>>> 大于等于
    
        #  字段__in(容器) >>>> 从容器中按顺序匹配相等的值,返回QuerySet对象
        # res = models.books.objects.filter(price__in=[1,123])
        # print(res)
    
        #  字段__range(start,end) >>>> 从一个范围内匹配相等的值,返回QuerySet对象
        # res = models.books.objects.filter(price__range=(2,124))
        # print(res)
    
    
    
        #模糊匹配
    
        # 包含
        # res=models.books.objects.filter(name__contains='b')
        # print(res)
    
        # 开头与结尾
        # res=models.books.objects.filter(name__startswith='book')
        # print(res)
    
        # res=models.books.objects.filter(name__endswith='1')
        # print(res)
    
        #日期匹配
        res=models.books.objects.filter(publish_date__day='23')
        print(res)
    
    

    多对多字段的四个方法

    add() 括号内既可以传数字也可以传数据对象并且都支持传多个
    
    set() 括号内 既可以传数字也传对象 并且也是支持传多个的但是需要注意 括号内必须是一个可迭代对象
    
    remove() 括号内 既可以传数字也传对象 并且也是支持传多个的
    
    clear()括号内不需要传任何参数 直接清空当前书籍对象所有的记录
    

    跨表查询的规律

     ORM跨表查询
            1.子查询
            2.连表查询
            
        正反向的概念
            外键字段在谁那儿 由谁查谁就是正向
            
            谁手里有外键字段 谁就是正向查
            没有外键字段的就是反向
            书籍对象 查  出版社    外键字段在书籍       正向查询
            出版社 查 书籍         外键字段在书籍       反向查询
            
            
            正向查询按字段
            反向查询按表名小写 ...
    
        #查询书本名为占星术杀人事件的作者名称
        # 正
        # res=models.books.objects.filter(name='占星术杀人事件').values('author__name')
        # print(res)
    
        # 反
        res=models.author.objects.filter(books__name='占星术杀人事件').values('name')
        print(res)
    
    
  • 相关阅读:
    Directx
    apr库开发
    linux 上編譯apache
    数字信号处理---FFT
    C# Parallel用法
    C#线程同步--线程通信
    C#线程同步--限量使用
    C#线程安全类型
    C# Task用法
    C# ThreadPool类(线程池)
  • 原文地址:https://www.cnblogs.com/Sheppard/p/11734727.html
Copyright © 2011-2022 走看看