zoukankan      html  css  js  c++  java
  • python

    #
    """
                        ----  正向查询按字段,反向查询按表名
    一: 一对多
        正向查询:(字段对象.关联表.查询字段)
            x_obj = models.Book.objects.filter(xxx).first()
            x_obj.publish.email
        反向查询:(字段对象.要查询的表名小写_set.all())
            x_obj = models.Publish.objects.filter(xxx).first()
            for i in x_obj.book_set.all():
                print(i)
    二: 多对多
        正向查询:(字段对象.关联表.all()) 查询所有
            x_obj = modles.Bookobjects.filter(xxx).first()
            for author in x_obj.authors.all():
                print(author.name, author.age)
                
        反向查询:(字段对象.关联表_set.all())
            x_obj = modles.Author.objects.filter(xxx).first()
            for book in x_obj_set.all():
                print(book.title)
    
    三:一对一
        正向查询:(字段对象.关联表名.关联表名字段)
            x_obj = modles.Author.objects.filter(xxx).first()
            x_obj = authorDetail.telephone
            
        反向查询:()
            x_obj = modles.AuthorDetail.objects.filter(xxx).first()
            x_obj.author.name 
            
    四:聚合/分组
        
        聚合:
            from django.db.models import Sum,Count,Avg
            ret = models.Book.objects.all().aggregate(price=Sum('price'))
        
        分组:
            1. queryset对象.annotate()
            2. annotate进行分组统计,按前面select 的字段进行 group by
            3. annotate() 返回值依然是 queryset对象,增加了分组统计后的键值对
            
            
            modles.dep.objects.values("name").annotate(c=Count('emp__name')).values('name','c')
                # 查询 dep 表, 按name 分组 , 将 emp下的name字段计数,返回结果是 name字段 和 计数结果
                
            modles.book.objects.values('id').annotate(c=Content(    ))
    """#
    直接执行原生的SQL语句,类似pymysql的用法
    #     from django.db import connection
    #     cursor = connection.cursor()  # 获取光标,等待执行SQL语句
    #     cursor.execute("""SELECT * from person where id = %s""", [1])
    #     row = cursor.fetchone()
    #     print(row)
  • 相关阅读:
    Generate Parentheses (Java)
    leetcode15
    MD5
    leetcode409
    Vue第一个简单的例子
    SpringBoot和Ajax通信
    如何使用安装光盘为本机创建yum repository
    Less known Solaris features: svccfg editprop (ZT)
    Rename Oracle Managed File (OMF) datafiles in ASM(ZT)
    跨数据文件删除flashback database
  • 原文地址:https://www.cnblogs.com/chaoqi/p/10560869.html
Copyright © 2011-2022 走看看