[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)


相关文章
|
6天前
|
数据采集 关系型数据库 MySQL
如何用Python+sqlalchemy创建数据库
如何用Python+sqlalchemy创建数据库
15 2
|
9天前
|
缓存 前端开发 Java
python之django
python之django
|
9天前
|
数据库 Python
python之操作数据库删除创建
python之操作数据库删除创建
|
9天前
|
SQL 关系型数据库 MySQL
ThinkPHP6 连接使用数据库,增删改查,find,select,save,insert,insertAll,insertGetId,delete,update方法的用法
本文介绍了在ThinkPHP6框架中如何连接和使用数据库进行增删改查操作。内容包括配置数据库连接信息、使用Db类进行原生MySQL查询、find方法查询单个数据、select方法查询数据集、save方法添加数据、insertAll方法批量添加数据、insertGetId方法添加数据并返回自增主键、delete方法删除数据和update方法更新数据。此外,还说明了如何通过数据库配置文件进行数据库连接信息的配置,并强调了在使用Db类时需要先将其引入。
ThinkPHP6 连接使用数据库,增删改查,find,select,save,insert,insertAll,insertGetId,delete,update方法的用法
|
7天前
|
关系型数据库 MySQL 数据管理
pymysql:Python操作MySQL数据库的又一利器
pymysql:Python操作MySQL数据库的又一利器
12 0
|
7天前
|
SQL 关系型数据库 MySQL
Python小技巧——将CSV文件导入到MySQL数据库
Python小技巧——将CSV文件导入到MySQL数据库
12 0
|
8天前
|
数据库 Python
django中数据库外键可以自定义名称吗
django中数据库外键可以自定义名称吗
|
5月前
|
前端开发 数据库 Python
Python Web 开发: 解释 Django 框架的 MVC 架构是什么?
Python Web 开发: 解释 Django 框架的 MVC 架构是什么?
106 0
|
5月前
|
存储 关系型数据库 MySQL
Python Django框架下将MySQL数据库的内容在网页上动态展示(修订版-2021-05-17)
Python Django框架下将MySQL数据库的内容在网页上动态展示(修订版-2021-05-17)
30691 0
|
2月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
107 4
下一篇
无影云桌面