• Python


    models.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"
    

    employee2 表:

    dept2 表:

    select_related:

    select_related 将表之间进行 join 连表操作,一次性获取关联的数据

    select_related 主要针一对一和多对一关系进行优化

    select_related 使用 SQL 的 join 语句进行优化,通过减少 SQL 查询的次数来进行优化、提高性能

    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
    
        ret = models.Employee2.objects.select_related().values("name", "dept__name")
        print(ret)
    

     运行结果:

     也可以用:

    ret = models.Employee2.objects.values("name", "dept__name")
    print(ret)
    

    进行查询

    bulk_create:

    bulk_create(objs, batch_size=None)
    批量插入 objs,batch_size 为一次插入的个数

    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
    
        objs = [
            models.Dept(name="A 部门"),
            models.Dept(name="B 部门"),
            models.Dept(name="C 部门"),
            models.Dept(name="D 部门"),
            models.Dept(name="E 部门"),
            models.Dept(name="F 部门"),
            models.Dept(name="G 部门"),
            models.Dept(name="H 部门"),
            models.Dept(name="I 部门"),
            models.Dept(name="J 部门"),
        ]
        models.Dept.objects.bulk_create(objs, 2)
    

    运行结果,dept2 表:

  • 相关阅读:
    Pandas包对多个数据表(DataFrame)的常用整合功能。
    pandas numpy 简单应用 loandata
    榛果 美团 登录 爬虫 requests session
    python 日期循环
    opencv 验证码 识别
    运行MapReduce任务
    CenOS安装MySQL服务
    leetcode 67. 二进制求和
    最近对一些领域比较感兴趣,这里列举出来供以后查阅
    leet code 1014. 最佳观光组合
  • 原文地址:https://www.cnblogs.com/sch01ar/p/11324724.html
Copyright © 2020-2023  润新知