zoukankan      html  css  js  c++  java
  • 093:QuerySet API详解-QuerySet转换为SQL的条件

    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"
  • 相关阅读:
    C# 中==和Equal的区别
    3dmath复习随笔
    3dmax学习资料记录
    [官方教程] Unity 5 BLACKSMITH深度分享
    [技术] [插件精选] 炫酷粒子特效(下)
    Unity3D总结:关于射线碰撞
    Unity3D将来时:IL2CPP(上)
    3DMAX 9 角色建模3 uv展开
    php,c# hamsha1
    U3D 的一些基础优化
  • 原文地址:https://www.cnblogs.com/zheng-weimin/p/10287482.html
Copyright © 2011-2022 走看看