当前位置 : 主页 > 编程语言 > python >

Django从理论到实战(part36)--QuerySet转换SQL

来源:互联网 收集:自由互联 发布时间:2022-06-15
学习笔记,仅供参考,有错必纠 参考自:Django打造大型企业官网–Huang Y;​​​官方文档​​ QuerySet转换SQL 生成一个​​QuerySet​​​对象并不会马上转换为​​SQL​​​语句,比如

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



QuerySet转换SQL



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

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

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

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

  • 迭代:在遍历​​QuerySet​​对象的时候,会首先先执行这个​​SQL​​语句,然后再把这个结果返回进行迭代。比如以下代码就会转换为​​SQL​​语句:
  • for book in Book.objects.all():
    print(book)
  • 使用步长做切片操作:​​QuerySet​​可以类似于列表一样做切片操作。做切片操作本身不会执行​​SQL​​语句,但是如果如果在做切片操作的时候提供了步长,那么就会立马执行​​SQL​​语句。需要注意的是,做切片后不能再执行​​filter​​方法,否则会报错。
  • 调用​​len​​函数:调用​​len​​函数用来获取​​QuerySet​​中总共有多少条数据也会执行​​SQL​​语句。
  • 调用​​list​​函数:调用​​list​​函数用来将一个​​QuerySet​​对象转换为​​list​​对象也会立马执行​​SQL​​语句。
  • 判断:如果对某个​​QuerySet​​进行判断,也会立马执行​​SQL​​语句。
  • 【转自:武汉seo优化 http://www.5h5q.com提供,感谢支持】
    上一篇:Django从理论到实战(part41)--WSGIRequest对象
    下一篇:没有了
    网友评论