[Python]Django 数据库数据的增删改查(二)

简介: [Python]Django 数据库数据的增删改查(二)

5. 查询数据

5.1 基本查询

5.1.1 get()

get()得到一个指定的数据对象。

book = BookInfo.objects.get(id=1

查询不存在的数据会报异常

get()只能用于查询结构为一个的查询

5.1.2 all()

all()得到模型的所有数据对象。返回结果是一个列表。

books = BookInfo.objects.all()
• 1

5.1.3 count()

count()返回查询结果的数量。

books_cnt = BookInfo.objects.all().count()

# BookInfo.objects.count()也可以统计所有数据对象的个数
books_cnt = BookInfo.objects.count()

5.2 过滤查询 filter() & get() & exclude()

相当于SQL中的where语句select * from bookinfo where 条件语句

  • filter():筛选过滤符合条件的n个结果(n的取值为0-n)。返回结果为一个列表
  • get():筛选符合条件的1个结果(返回结果只能一个,大于等于一个会报错),返回一个单一对象
  • exclude():排除掉符合条件剩下的结果,相当于条件语句中not

语法:

以filter()为例

filter(字段名__运算符=值)

字段名和运算符间使用两个下划线进行分割,所以属性名不能包括多个下划线。

5.2.1 运算符

  • 相等
  • exact:表示判等。
  • 模糊查询
  • contains:是否包含。
  • 说明:如果要包含%无需转义,直接写即可。
  • startswith、endswith:以指定值开头或结尾。
  • 以上运算符都区分大小写,在这些运算符前加上i表示不区分大小写,如iexact、icontains、istartswith、iendswith.
  • 空查询
  • isnull:是否为null。
  • 范围查询
  • in:是否包含在范围内。
  • 比较查询
  • gt大于 (greater then)
  • gte大于等于 (greater then equal)
  • lt小于 (less then)
  • lte小于等于 (less then equal)
  • 不等于的运算符,使用exclude()过滤器。
  • 日期查询
  • year、month、day、week_day、hour、minute、second:对日期时间类型的属性进行运算。

5.2.2 相等

  • 相等
  • exact:表示判等。
# 查询编号为1的图书
# exact相当于 等于号
book = BookInfo.objects.get(id__exact=1)
# 简写形式
book = BookInfo.objects.get(id=1)

# exact相当于 等于号
book = BookInfo.objects.filter(id__exact=1)
# 简写形式
book = BookInfo.objects.filter(id=1)

返回结果为一个列表

5.2.3 模糊查询

  • 模糊查询
  • contains:是否包含。
  • 说明:如果要包含%无需转义,直接写即可。
  • startswith、endswith:以指定值开头或结尾。
  • 以上运算符都区分大小写,在这些运算符前加上i表示不区分大小写,如iexact、icontains、istartswith、iendswith.
# 查询书名包含'湖'的图书
# 不知道返回结果有几个,使用filter
# 包含 运算符 contains
# 如果要包含%无需转义,直接写即可
books = BookInfo.objects.filter(name__contains='湖')

# 查询书名以'部'结尾的图书
# 不知道返回结果有几个,使用filter
# startswith、endswith:以指定值开头或结尾。
books = BookInfo.objects.filter(name__endswith='部')

5.2.4 空查询

  • 空查询
  • isnull:是否为null。
# 查询书名为空的图书
books = BookInfo.objects.filter(name__isnull=True)

5.2.5 范围查询

  • 范围查询
  • in:是否包含在范围内。
# 查询编号为1或3或5的图书
books = BookInfo.objects.filter(id__in=[1, 3, 5])

5.2.6 比较查询

  • 比较查询
  • gt大于 (greater then)
  • gte大于等于 (greater then equal)
  • lt小于 (less then)
  • lte小于等于 (less then equal)
  • 不等于的运算符,使用exclude()过滤器。
# 查询编号大于3的图书
books = BookInfo.objects.filter(id__gt=3)

# 查询编号不大于3的图书
books = BookInfo.objects.exclude(id__gt=3)


相关文章
|
4天前
|
开发框架 数据库 开发者
Web开发新境界:用Python玩转Django和Flask!
【6月更文挑战第12天】Python的Web开发框架Django和Flask各有千秋。Django是全能型框架,适合快速开发大型应用,提供ORM、模板引擎、URL路由和后台管理等全面功能。Flask则轻量级且灵活,适用于小型到中型应用,以其简单易用、高度可扩展和灵活路由著称。两者结合使用,能应对各种Web开发需求。
|
1天前
|
小程序 前端开发 JavaScript
计算机Python项目|django傣族节日及民间故事推广小程序
计算机Python项目|django傣族节日及民间故事推广小程序
|
2天前
|
前端开发 JavaScript 数据安全/隐私保护
计算机Python项目|django学生成绩管理系统
计算机Python项目|django学生成绩管理系统
|
2天前
|
SQL 安全 API
Python基础教程(第3版)中文版 第13章 数据库支持(笔记)
Python基础教程(第3版)中文版 第13章 数据库支持(笔记)
|
4天前
|
JavaScript 关系型数据库 MySQL
Python实战:从猎聘网获取职位信息并存入数据库
Python实战:从猎聘网获取职位信息并存入数据库
|
4天前
|
SQL 关系型数据库 MySQL
基于Hive的天气情况大数据分析系统(通过hive进行大数据分析将分析的数据通过sqoop导入到mysql,通过Django基于mysql的数据做可视化)
基于Hive的天气情况大数据分析系统(通过hive进行大数据分析将分析的数据通过sqoop导入到mysql,通过Django基于mysql的数据做可视化)
|
5天前
|
SQL 关系型数据库 MySQL
Python 操作 MySQL 数据库
Python 操作 MySQL 数据库
|
1月前
|
开发框架 开发者 Python
深入探究Python Web开发框架:Flask与Django
Python作为一种广泛应用于Web开发的编程语言,其拥有众多优秀的Web开发框架。本文将深入探讨其中两大知名框架——Flask与Django。通过对它们的概念与实践进行比较分析,帮助读者更好地理解和选择适合自己项目需求的Web开发框架。
|
1月前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
【4月更文挑战第9天】本文对比了Python三大Web框架Django、Flask和Pyramid。Django功能全面,适合快速开发,但学习曲线较陡;Flask轻量灵活,易于入门,但默认配置简单,需自行添加功能;Pyramid兼顾灵活性和可扩展性,适合不同规模项目,但社区及资源相对较少。选择框架应考虑项目需求和开发者偏好。
|
1月前
|
开发框架 前端开发 JavaScript
Python 有哪些Web框架?比如Flask、Django等知识梳理
Python 有哪些Web框架?比如Flask、Django等知识梳理