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)
  • 相关阅读:
    07_控制线程_join_线程插队
    06_线程的生命周期及状态
    05_线程间通信
    04_线程的创建和启动_使用Callable和Future的方式
    03_线程的创建和启动_实现Runnable接口方式
    02_线程的创建和启动_继承Thread方式
    01_基础知识
    07_XPath_02_常用语法
    二叉树分层遍历
    [LeetCode] Binary Tree Level Order Traversal II
  • 原文地址:https://www.cnblogs.com/chaoqi/p/10560869.html
Copyright © 2011-2022 走看看