码迷,mamicode.com
首页 > 数据库 > 详细

093:QuerySet API详解-QuerySet转换为SQL的条件

时间:2019-01-18 15:09:54      阅读:271      评论:0      收藏:0      [点我收藏+]

标签:切片   使用   obj   color   方法   for   情况   一个   style   

QuerySet API详解-QuerySet转换为SQL的条件:

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

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

我们可以看到在打印 connection.quries 的时候打印的是一个空的列表。说明上面的 QuerySet 并没有真正的执行。

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

    for item in books:
        print(item.name)

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

books = Book.objects.get_queryset()[1:2:2]

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

    print(len(books))

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

    print(list(books))

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

  if books:
      print"bababa"

 

093:QuerySet API详解-QuerySet转换为SQL的条件

标签:切片   使用   obj   color   方法   for   情况   一个   style   

原文地址:https://www.cnblogs.com/zheng-weimin/p/10287482.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!