07-13 django 61-65

______egon新书python全套来袭请看:https://egonlin.com/book.html

61.django 中的 F 的作用?

像之前我们所了解的一些过滤的例子和操作都是在针对字段值和某一个常量之间作比较,但是如果我们要针对两个字段值作比较的话就不行了,这就涉及到这个F查询了

62.django 中的 Q 的作用?

filter() 等方法中的关键字参数查询都是一起进行“AND” 的。 如果你需要执行更复杂的查询(例如OR语句),你可以使用Q对象。

63.django 中如何执行原生 SQL?

1.使用execute执行自定义的SQL
     直接执行SQL语句(类似于pymysql的用法)
        # 更高灵活度的方式执行原生SQL语句
        from django.db import connection
        cursor = connection.cursor()
        cursor.execute("SELECT DATE_FORMAT(create_time, '%Y-%m') FROM blog_article;")
        ret = cursor.fetchall()
        print(ret)
2.使用extra方法 :queryset.extra(select={"key": "原生的SQL语句"})
3.使用raw方法
    1.执行原始sql并返回模型
    2.依赖model多用于查询

64.only 和 defer 的区别?

defer('id','name'):取出对象,字段除了id和name都有
only('id','name'):取的对象,只有id和name

65.select_related 和 prefetch_related 的区别?

前提:有外键存在时,可以很好的减少数据库请求的次数,提高性能
select_related通过多表join关联查询,一次性获得所有数据,只执行一次SQL查询
prefetch_related分别查询每个表,然后根据它们之间的关系进行处理,执行两次查询
posted @ 2019-10-23 21:31  小猿取经-林海峰老师  阅读(599)  评论(0编辑  收藏  举报