首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Django之ORM F与Q查询

Django 的 ORM 是创建 SQL 去查询和操作数据库的一个 Python 式的方式。 F查询 Q查询 F 查询 在前几个小章节里,构造的过滤器都只是将字段值与某个常量做比较。...示例: 查询浏览数大于评论数的文章 Django 支持 F() 对象之间以及 F() 对象和常数之间的加减乘除和取模的操作。...例如:在所有标题后面加上(原创) Q 查询 filter() 等方法中的关键字参数查询都是一起进行 "AND"。如果需要执行更复杂的查询(例如:OR 语句)可以使用 Q 对象。...示例: 查询作者是“小团子”或“yuntuan”的文章 可以组合 & 和 | 操作符以及使用括号进行分组来编写任意复杂的 Q 对象。...同时,Q 对象可以使用 ~ 操作符取反,这允许组合正常的查询和取反(NOT)查询。 示例: 查询作者名字是“小团子”并且不是2018年发表的文章的标题。 查询函数可以混合使用 Q 对象和关键字参数。

1.1K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何查看Django ORM执行的SQL语句

    Django ORM对数据库操作的封装相当完善,日常大部分数据库操作都可以通过ORM实现。 但django将查询过程隐藏在了后台,这在开发时可能会略显晦涩,并且使用方式不当还会造成开销过大。...那么如何查看django何时执行了什么sql语句呢?答案是使用Logging。...9, 10, 11, 12) [2018-04-21 21:09:14,708] "GET / HTTP/1.1" 200 22325 上面打印出的日志是我的博客首页获取前十篇文章时所执行的部分SQL语句...,还可以由此知道django何时执行了SQL。...在某些情况下我们可以通过这种方式判断,后台是否重复执行了SQL语句,便于指导数据库访问优化。 Django使用Python的内建的logging模块执行系统日志记录。

    1.9K20

    用人话讲解django之ORM的查询语句

    def orm_test(request): """ 增加操作 """ # 新增一个名字为1901的一个班级,create是新增方法,里面可以接受多个字段参数 #...Class.objects.create(name="1901") # 同时新增一个学生和班级操作 # 新增一个班级名称为1903的班级,返回一个班级实例 # cls_instance...#学生的姓名 学生的年龄 学生的分数 # print(stu.name,stu.age,stu.score) #对查询集结果进行切片,取第0个到第4个,和列表的切片一样...语句 # 精准查找 两条语句作用一样,查询姓名位小美的学生,结果返回查询集 # queryset = Student.objects.filter(name='小美') # queryset...queryset: # print stu.name,stu.cls.id,stu.cls.name # 第二种 : 牛逼的双下划线(跨表),可以用多个双下划线跨多张表 # 语句功能是查询学生表中所有学生的姓名和学生所在班级的名称

    48510

    Django中ORM介绍和字段及其参数

    ORM的劣势 ORM的缺点是会在一定程度上牺牲程序的执行效率。 ORM用多了,造成SQL语句就不会写了,关系数据库相关技能退化。 ORM总结 ORM只是一种工具,工具确实能解决一些重复,简单的劳动。...Django支持MySQL5.5及更高版本。  Django中ORM常用的字段和参数 常用的字段 AutoField:int自增型,必须填入参数 primary_key = True 。...就是说关联对象找到这个对象后它是经过排序的。指定这个属性后你会得到一个get_XXX_order()和set_XXX_order()的方法,通过它们你可以设置或者回去排序的对象。...ordering 这个字段是告诉Django模型对象返回的记录结果集是按照哪个字段排序的。...这会在 Django admin 层和数据库层同时做出限制(也就是相关的 UNIQUE 语句会被包括在 CREATE TABLE 语句中)。

    2.8K80

    【Django】Django ORM 学习笔记

    语句打交道,只需简单的操作对象的属性和方法。...同时 ORM 避免了不规范、冗余、风格不统一的 SQL 语句,可以避免很多人为的 bug,方便编码风格的统一和后期维护。...,ORM 可能会生成的效率低下的 SQL 通过 Lazy load 和 Cache 很大程度上改善了性能问题 SQL 调优,SQL 语句是由 ORM 框架自动生成,虽然减少了 SQL 语句错误的发生,但是也给...对象和关系之间并不是完美映射 一般来说 ORM 足以满足我们的需求,如果对性能要求特别高或者查询十分复杂,可以考虑使用原生 SQL 和 ORM 共用的方式 Django ORM 在 Django 框架中集成了...= Blog.objects.filter(title='blog2') q = q.filter(content='blog2') q = q.exclude(id=3) # 执行下面的语句才会真正访问数据库

    2.2K20

    Django ORM模型:想说爱你不容易

    查询 Django ORM可以通过一些方法来实现。其中的很多方法返回的是Django自定义的QuerySet类的迭代器。Python看到迭代器时会懒惰求值,所以这些方法返回时并不会真正进行数据库操作。...我觉得这种情况下,可以直接上原始的SQL查询语句了,没必要再自己折腾自己。 F表达式和Q表达式 F表达式指代了一列,对于update操作时引用列的值有用。...Q表达式代表了WHERE的一个条件,可以用于多个WHERE条件的连接。这些都是Django ORM用来弥补缺陷的。就拿Q表达式来说。查询方法中跟多个参数的话,相当于多个WHERE条件。...为了表达OR和NOT关系,Django ORM就造了个Q表达式,比如: filter(Q(name__contains="abc")|Q(name__startswith("xxx"))) 为了弥补缺陷...但如果需要构建复杂的SQL语句,与其在Django ORM里绕来绕去,还不如直接用原始的SQL语句。这个是我最强烈的一个感受。当然,Django ORM还是可用的工具。

    78920

    Django ORM模型:想说爱你不容易

    查询 Django ORM可以通过一些方法来实现。其中的很多方法返回的是Django自定义的QuerySet类的迭代器。Python看到迭代器时会懒惰求值,所以这些方法返回时并不会真正进行数据库操作。...我觉得这种情况下,可以直接上原始的SQL查询语句了,没必要再自己折腾自己。 F表达式和Q表达式 F表达式指代了一列,对于update操作时引用列的值有用。...Q表达式代表了WHERE的一个条件,可以用于多个WHERE条件的连接。这些都是Django ORM用来弥补缺陷的。就拿Q表达式来说。查询方法中跟多个参数的话,相当于多个WHERE条件。...为了表达OR和NOT关系,Django ORM就造了个Q表达式,比如: filter(Q(name__contains="abc")|Q(name__startswith("xxx"))) 为了弥补缺陷...但如果需要构建复杂的SQL语句,与其在Django ORM里绕来绕去,还不如直接用原始的SQL语句。这个是我最强烈的一个感受。当然,Django ORM还是可用的工具。

    64320

    Django ORM模型:想说爱你不容易

    查询 Django ORM可以通过一些方法来实现。其中的很多方法返回的是Django自定义的QuerySet类的迭代器。Python看到迭代器时会懒惰求值,所以这些方法返回时并不会真正进行数据库操作。...我觉得这种情况下,可以直接上原始的SQL查询语句了,没必要再自己折腾自己。 F表达式和Q表达式 F表达式指代了一列,对于update操作时引用列的值有用。...Q表达式代表了WHERE的一个条件,可以用于多个WHERE条件的连接。这些都是Django ORM用来弥补缺陷的。就拿Q表达式来说。查询方法中跟多个参数的话,相当于多个WHERE条件。...为了表达OR和NOT关系,Django ORM就造了个Q表达式,比如: filter(Q(name__contains="abc")|Q(name__startswith("xxx"))) 为了弥补缺陷...但如果需要构建复杂的SQL语句,与其在Django ORM里绕来绕去,还不如直接用原始的SQL语句。这个是我最强烈的一个感受。当然,Django ORM还是可用的工具。

    1.3K80

    三、模型(一)

    Django Models   django 本身提供了非常强大易使用的ORM组件,并且支持多种数据库,如sqllite,mysql,progressSql,Oracle等,当然最常用的搭配还是mysql...当你在Python中处理Unicode对象的时候,你可以直接将它们混合使用和互相匹配而不必去考虑编码细节。 Django 在其内部的各个方面都使用到了 Unicode 对象。...我们还没有告诉数据库 怎样对结果进行排序,所以我们返回的结果是无序的。 在你的 Django 应用中,你或许希望根据某字段的值对检索结果排序,比如说,按字母顺序。...Publisher.objects.order_by("name") [, ] 跟以前的 all() 例子差不多,SQL语句里多了指定排序的部分...连锁查询 我们已经知道如何对数据进行过滤和排序。 当然,通常我们需要同时进行过滤和排序查询的操作。

    4.5K90

    06.Django基础五之django模型层(二)多表操作

    的manytomany自动帮我们创建第三张表,两种方式建立关系都可以,以后的学习我们暂时用orm自动创建的第三张表,因为手动创建的第三张表我们进行orm操作的时候,很多关于多对多关系的表之间的orm语句方法无法使用...这个例子中的CREATE TABLE SQL 语句使用PostgreSQL 语法格式,要注意的是Django 会根据settings 中指定的数据库类型来使用相应的SQL 语句。...`age`;'''   下面是书籍表和出版社表的一个连表分组的sql语句写法: ?...如果你需要执行更复杂的查询(例如OR 语句),你可以使用Q 对象。...Django 提供两种方法使用原始SQL进行查询:一种是使用raw()方法,进行原始SQL查询并返回模型实例;另一种是完全避开模型层,直接执行自定义的SQL语句。

    2.7K20

    ORM初识和数据库操作

    SQL语句打交道,只需简单的操作对象的属性和方法。...ORM的优劣势 ORM的优势 ORM解决的主要问题是对象和关系的映射。它通常把一个类和一个表一一对应,类的每个实例对应表中的一条记录,类的每个属性对应表中的每个字段。...ORM的劣势 ORM的缺点是会在一定程度上牺牲程序的执行效率。 ORM用多了SQL语句就不会写了,关系数据库相关技能退化... ORM总结 ORM只是一种工具,工具确实能解决一些重复,简单的劳动。...(相当于用sql语句用join连接的方式,可以在settings里面设置,可查看sql语句) 一对多查询: 练习1、查询人民出版社出版过的所有的书的价格和名字 # 基于双下划线的方式查询1=======...如果你需要执行更复杂的查询(例如OR 语句),你可以使用Q 对象。

    2.6K30
    领券