zoukankan      html  css  js  c++  java
  • Python

    单表查询:

    models.py:

    from django.db import models
    
    
    class Employee(models.Model):
        name = models.CharField(max_length=16)
        age = models.IntegerField()
        salary = models.IntegerField()
        province = models.CharField(max_length=32)
        dept = models.CharField(max_length=16)
    
        def __str__(self):
            return self.name
    
        class Meta:
            db_table = "employee"
    

    employee 表中数据:

    orm.py:

    import os
    
    if __name__ == '__main__':
        # 加载 Django 项目的配置信息
        os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite2.settings")
        # 导入 Django,并启动 Django 项目
        import django
        django.setup()
    
        from app04 import models
    
        from django.db.models import Avg
    
        # 计算每个部门的平均工资
        ret = models.Employee.objects.values("dept").annotate(avg=Avg("salary")).values("dept", "avg")
        print(ret)
    

    运行结果:

    连表查询:

    model.py:

    from django.db import models
    
    
    class Employee2(models.Model):
        name = models.CharField(max_length=16)
        age = models.IntegerField()
        salary = models.IntegerField()
        province = models.CharField(max_length=32)
        dept = models.ForeignKey(to="Dept")
    
        def __str__(self):
            return self.name
    
        class Meta:
            db_table = "employee2"
    
    
    class Dept(models.Model):
        name = models.CharField(max_length=16, unique=True)
    
        def __str__(self):
            return self.name
    
        class Meta:
            db_table = "dept2"
    

    dept2 表:

    employee2 表:

    orm.py:

    import os
    
    if __name__ == '__main__':
        # 加载 Django 项目的配置信息
        os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite2.settings")
        # 导入 Django,并启动 Django 项目
        import django
        django.setup()
    
        from app04 import models
    
        from django.db.models import Avg
    
        # 连表查询计算每个部门的平均工资
        ret = models.Employee2.objects.values("dept_id").annotate(avg=Avg("salary")).values("dept__name","avg")  # 一个双下划线表示跨一张表查询
        print(ret)
    

    运行结果:

  • 相关阅读:
    C++ 面向对象编程3 封装 继承 多态
    C++ 面向对象编程2
    C++ 面向对象编程1
    C++开发环境和基础语法
    RTOS概述
    STM32F4 窗口看门狗(WWDG)
    STM32F407 独立看门狗 (IWDG)
    DHT11温湿度传感器
    Ubuntu20.04安装、配置、卸载QT5.9.9与QT creator以及第一个编写QT程序
    Linux,Ubuntu20.04LTS环境下安装JDK1.8和IDEA2021
  • 原文地址:https://www.cnblogs.com/sch01ar/p/11324635.html
Copyright © 2011-2022 走看看