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(查询语句没有显示赋值给变量而直接进 ...
随机推荐
- C# 3.0 扩展方法&接口
namespace ExtensionInterfaceMethod { class Program { static void Main(string[] args) { //使用接口变量来调用扩展 ...
- [Kubernetes] Kubectl and Pod
1. Create and run a Pod kubectl run my-nginx --image=nginx:alpine We can run kubectl get all to see ...
- TensorflowTensorflow细节-P158-slim的使用
slim的使用 从以下细节可以看出先使用slim = tf.contrib.slim要回用,剩下的看看以下代码就懂了 import tensorflow as tf slim = tf.contrib ...
- js原型和原型链的问题
<script> //js原型和原型链的概念 functionperson(name){ this.name=name; } person.prototype.age=18; person ...
- DVWA暴力破解练习
本周学习内容: 1.结合DVWA学习Web应用安全权威指南 实验内容: 使用BurpSuite工具进行DVWA暴力破解 实验步骤: 1.打开DVWA,进入DVWA Security模块将 Level修 ...
- js实现大文件上传分片上传断点续传
文件夹上传:从前端到后端 文件上传是 Web 开发肯定会碰到的问题,而文件夹上传则更加难缠.网上关于文件夹上传的资料多集中在前端,缺少对于后端的关注,然后讲某个后端框架文件上传的文章又不会涉及文件夹. ...
- 转 Storm JAVA_HOME is incorrectly set.
问题可能有两个原因: 1.在环境变量中未设置JAVA_HOME变量名称. 解决办法: 在环境变量中添加. 或者在storm中的bin文件下有一个storm-config.cmd,使用文本打开,查询JA ...
- EasyUI日期时间框DateTimeBox
WEB DEMO 日期时间框 DateTimeBox <!DOCTYPE html> <html> <HTML> <head> <HEAD> ...
- 急急急,tp5的验证码不显示
本地环境phpstudy,使用composer安装tp5,按照看云<ThinkPHP5.0完全开发手册>验证码配置,就是不显示验证码. 使用:<div>{:captcha_im ...
- 在Git中如何撤销上一次的commit
有的时候我们一不小心就git commit -m ‘commit message info’解决办法,很简单,只需执行git reset HEAD~这条命令即可,即能保证你原本的修改还在,也能撤销本次 ...