django models单表查询
2019-06-11 20:40
1011 查看
显示ORM底层生成SQL
from movie.models import * #导入 def sql(): from django.db import connection print(connection.queries[-1]['sql'])
查询单个对象
所有的继承自models.Model的类 都会有一个叫objects(管理器) *get()返回单个对象 返回多个会报错 Movie.objects.get(id=17) <TMovie: TMovie object (17)> sql():SELECT `t_movie`.`id`, `t_movie`.`name`, `t_movie`.`account`, `t_movie`.`image`, `t_movie`.`download_url` FROM `t_movie` WHERE `t_movie`.`id` = 17 * 获得第一个 Movie.objects.first() 执行sql() 查看sql语法 * 获得最后一个 Movie.objects.last() * 获得记录的总数 Movie.objects.count()
查询多个对象
* 获得所有的记录 Movie.objects.all() # 懒加载 只有调用对象或遍历时才会执行sql语法 * 切片 (不支持负数索引) Movie.objects.all()[20:40] # 底层直接使用了limit字句,可以自动的分页 * 过滤 常用返回多个对象 没有也不报错 # 结果集,查询集 Movie.objects.filter(name='窒息') * 模糊查询 * like * %(多个字符) _(一个字符) * 查询爱情结尾的 SELECT * from movie WHERE name LIKE '%爱情' Movie.objects.filter(name__endswith='爱情') * 查询爱情开头的 SELECT * from movie WHERE name LIKE '爱情%' Movie.objects.filter(name__startswith='爱情') * 包含爱情的 SELECT * from movie where name like '%爱情%' Movie.objects.filter(name__contains='爱情') * 忽略大小写 Movie.objects.filter(mname__istartswith='h') * 查询某个字段是否为null Movie.objects.filter(mname__isnull=True) * 多条件查询 Movie.objects.filter(mname__contains='爱情',mid=147) Movie.objects.filter(mname__contains='爱情').filter(mid=147) * 部分查询 Movie.objects.values('mname','mid').filter(mname__contains='爱情') * 排除一部分 Movie.objects.filter(mname__contains='爱情').exclude(mname__startswith='爱情') * 排序 Movie.objects.order_by('id') *降序 Movie.objects.order_by('-id')
日期查询
* 查询大于某个时间的记录 Post.objects.filter(created__gt='2019-1-20') * 查询最近一个月的帖子(查询最近不活跃的用户) def get_recent_month_posts(): import datetime current = datetime.date.today()-datetime.timedelta(days=30) current = str(current) return Post.objects.filter(created__gt=current) Post.objects.filter(created__range=('2019-1-20','2019-3-20'))
相关文章推荐
- Django models .all .values .values_list 几种数据查询结果的对比
- Django models对象的select_related方法(减少查询次数)
- Django models中多对多字段的反查询
- Django models对象的select_related方法(减少查询次数)
- Django Models 多条件查询 以及Q/F查询
- Django查询models对象报错:TypeError: __str__ returned non-string (type decimal.Decimal)
- Blog.objects.filter()反查外键,django数据库models中的跨表查询,相当于sql的join
- Django models字段查询谓词表
- 【完整版】Django--Models和Database--建立查询(model查询和原始sql)[包括Q查询 F查询]
- [django]用日期来查询datetime类型字段
- Django项目中的ORM映射与模糊查询
- Django之QuerySet 查询
- 基于 Django1.10 文档的深入学习(26)—— Creating forms from models 之 基础
- Django框架models使用group by的方法
- 2. Django学习笔记——models 定义属性
- [Django]models中定义的choices 字典在页面中显示值
- Django的prefetch_related查询学习笔记
- django 一对一查询
- Django系列教程(3)-- 模型的查询
- Django如何开发简单的查询接口详解