数据库教程:Django从理论到实战(part36)–QuerySet转换SQL

学习笔记,仅供参考,有错必纠参考自:Django打造大型企业官网–Huang Y;官方文档QuerySet转换SQL生成一个QuerySet对象并不会马上转换为SQL语句,比如我们获取Book表下所有的图书:books = Book.objects.all()print(connection.queries)打印connection.quries时将返回一个空的列表,说明上面的QuerySet并没有真正的执行。在以下情况下QuerySet会被转换为SQL语句执行:迭代:在遍历Qu

学习笔记,仅供参考,有错必纠
参考自:Django打造大型企业官网–Huang Y;官方文档


QuerySet转换SQL

生成一个QuerySet对象并不会马上转换为SQL语句,比如我们获取Book表下所有的图书:

books = Book.objects.all() print(connection.queries) 

打印connection.quries时将返回一个空的列表,说明上面的QuerySet并没有真正的执行。

在以下情况下QuerySet会被转换为SQL语句执行:

  1. 迭代:在遍历QuerySet对象的时候,会首先先执行这个SQL语句,然后再把这个结果返回进行迭代。比如以下代码就会转换为SQL语句:

     for book in Book.objects.all():      print(book) 
  2. 使用步长做切片操作:QuerySet可以类似于列表一样做切片操作。做切片操作本身不会执行SQL语句,但是如果如果在做切片操作的时候提供了步长,那么就会立马执行SQL语句。需要注意的是,做切片后不能再执行filter方法,否则会报错。

  3. 调用len函数:调用len函数用来获取QuerySet中总共有多少条数据也会执行SQL语句。

  4. 调用list函数:调用list函数用来将一个QuerySet对象转换为list对象也会立马执行SQL语句。

  5. 判断:如果对某个QuerySet进行判断,也会立马执行SQL语句。

数据库技术:Django从理论到实战(part36)–QuerySet转换SQL地址:https://blog.csdn.net/m0_37422217/article/details/107438568

需要了解更多数据库技术:Django从理论到实战(part36)–QuerySet转换SQL,都可以关注数据库技术分享栏目—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/dtteaching/630003.html

(0)
上一篇 2021年5月30日
下一篇 2021年5月30日

精彩推荐