数据库开发-Django ORM的单表查询

                                      作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

 

 

 

一.查询集

1>.查询集相关概述

查询会返回结果的集,它是django.db.models.query.QuerySet类型。 它是惰性求值,和SQLAlchemy一样。结果就是查询的集。 它是可迭代对象。
  惰性求值: 
    创建查询集不会带来任何数据库的访问,直到调用方法使用数据时,才会访问数据库。在迭代、序列 化、if语句中都会立即求值。   
缓存:     每一个查询集都包含一个缓存,来最小化对数据库的访问。 新建查询集,缓存为空。首次对查询集求值时,会发生数据库查询,Django会把查询的结果存在这个缓 存中,并返回请求的结果,接下来对查询集求值将使用缓存的结果。

2>.案例一(没有使用缓存,每次都要去查库,查了2次库)

 1 #!/usr/bin/env python
 2 #_*_conding:utf-8_*_
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie
 5 
 6 import os
 7 import django
 8 
 9 #参考salary/wsgi.py文件
10 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'salary.settings')
11 django.setup(set_prefix=False)
12 
13 #导入employee应用的models模块中定义的Employee类
14 from employee.models import Employee
15 
16 #没有使用缓存,而是每次都要去查库,查了2次
17 [ emp.first_name for emp in Employee.objects.all()]
18 [ emp.first_name for emp in Employee.objects.all()]
(0.001) SELECT @@SQL_AUTO_IS_NULL; args=None
(0.000) SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; args=None
(0.001) SELECT `employees`.`emp_no`, `employees`.`birth_date`, `employees`.`first_name`, `employees`.`last_name`, `employees`.`gender`, `employees`.`hire_date` FROM `employees`; args=()
(0.001) SELECT `employees`.`emp_no`, `employees`.`birth_date`, `employees`.`first_name`, `employees`.`last_name`, `employees`.`gender`, `employees`.`hire_date` FROM `employees`; args=()
以上代码执行结果戳这里

相关文章:

  • 2022-12-23
  • 2021-09-05
  • 2021-12-06
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-06-23
  • 2021-07-01
  • 2021-01-25
  • 2022-12-23
  • 2021-09-07
  • 2021-12-23
相关资源
相似解决方案