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 表:

Python - Django - ORM QuerySet 方法补充的更多相关文章
- Python - Django - ORM 查询方法
models.py: from django.db import models class Human(models.Model): id = models.AutoField(primary_key ...
- Python - Django - ORM 分组查询补充
单表查询: models.py: from django.db import models class Employee(models.Model): name = models.CharField( ...
- 关于Django ORM filter方法小结
django filter是一个过滤器,相当于SQL的select * from where. filter返回一个QuerySet对象,还可以在该对象上继续进行django orm 该有的操作. 有 ...
- Python - Django - ORM 多对多表结构的三种方式
多对多的三种方式: ORM 自动创建第三张表 自己创建第三张表, 利用外键分别关联作者和书,关联查询比较麻烦,因为没办法使用 ORM 提供的便利方法 自己创建第三张表,使用 ORM 的 ManyToM ...
- Python Django orm操作数据库笔记之QuerySet API
什么时候Django会将QuerySet转换为SQL去执行: 根据Django的数据库机制,对于QuerySet来说,当QuerySet被第一次构建,然后又调用他的filter方法,接着在对其进行切片 ...
- Django ORM queryset object 解释(子查询和join连表查询的结果)
#下面两种是基于QuerySet查询 也就是说SQL中用的jion连表的方式查询books = models.UserInfo.objects.all() print(type(books)) --- ...
- Python - Django - ORM F查询和Q查询
models.py: from django.db import models # 出版社 class Publisher(models.Model): id = models.AutoField(p ...
- Python - Django - ORM 多对多操作
models.py: from django.db import models # 出版社 class Publisher(models.Model): id = models.AutoField(p ...
- Django ORM Queryset 的缓存机制, 惰性查询简述
在Django的ORM中 必须注意由于QuerySet的 cache导致的数据获取不正确的问题 在哪些情况下不会出发QuerySet缓存? 隐式存储QuerySet(查询语句没有显示赋值给变量而直接进 ...
随机推荐
- set_index
Signature: df.set_index( ['keys', 'drop=True', 'append=False', 'inplace=False', 'verify_integrity=Fa ...
- python - ORM 查询
1. 正常查询: ## 效率低,因为每次查询都是查询表和关联表的所有数据 ret = User.objects.all() for item in ret: print(item.name,item. ...
- 学到了林海峰,武沛齐讲的Day37 完
day1 多用户同时刻下载上传程序分析 day2 htlm介绍 觉得收货的季节到了 day3 htlm介绍 day4 htlm介绍 关键字介绍 Toray大仙 Toray大仙 day ...
- Kafka 深入核心参数配置
Kafka 真是一个异常稳定的组件,服务器上我们部署了 kafka_2.11-1.0.1 版本的 kafka 除了几次计算时间太长触发了 rebalance 以外,基本没有处理过什么奇怪的问题. 但是 ...
- P1041 传染病控制——暴力遍历所有相同深度的节点
P1041 传染病控制 说实话这种暴力我还是头一次见,每次病毒都会往下传染一层: 数据范围小,我们可以直接枚举当前层保护谁就好了: 用vector 记录相同层数的节点:维护已经断了的点: 如果超出最底 ...
- 如何手动安装WordPress主题和插件(Linux)
1. 去官网找到你想使用的插件或主题,并复制下载地址 2. cd到WordPress网站目录下的插件或主题目录下 这里以我的为例: 安装插件:cd /var/www/html/wp-content/p ...
- ElasticSearch : 基础简介
1.安装 我用的docker安装,这个用起来比较方便,我是在腾讯云部署的docker,具体的过两天总结一下 安装: docker pull elasticsearch 运行: docker run - ...
- ZR#1005
ZR#1005 解法: 题解给了一个建图跑最短路的做法,但好像没有必要,因为 $ m $ 没有用,所以直接上完全背包就行了. CODE: #include<iostream> #inclu ...
- 【洛谷】P3188 [HNOI2007]梦幻岛宝珠
题目描述 给你N颗宝石,每颗宝石都有重量和价值.要你从这些宝石中选取一些宝石,保证总重量不超过W,且总价值最大为,并输出最大的总价值. 数据范围:N<=100;W<=2^30,并且保证每 ...
- python 的小技巧之统计list里面元素的个数
一般写法 def count_list(std:list,tongji): i=0 for item in std: if item==tongji: i+=1 print(i) if __name_ ...