Python - Django - ORM QuerySet 方法补充
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 表: