Django框架数据库ORM查询操作(6)

简介: 【7月更文挑战第6天】```markdownDjango ORM常用数据库操作:1) 查询所有数据2) 根据ID查询 3) 精确查询 4) 分页排序

Django框架在生成数据库的models模型文件后,旧可以在应用中通过ORM来操作数据库了。今天抽空试了下查询语句。以下是常用的查询语句。

以下查询需要引入django的Sum,Count,Q模块

from django.db.models import Sum,Count,Q

导入生成的model数据库表模型文件

from app.models import Model


1、查询所有数据

data = Model.objects.all()


2、根据id查询数据


data = Model.objects.filter(id='00036257bf4cc23480335')


3、根据条件查询单条数据


data = Model.objects.get(name='张三')

4、排序分页查询

  • # 升序查询100条
  • data = Model.objects.order_by('time')[0:100]
  • # 降序查询100条
  • data = Model.objects.order_by('-time')[0:100]



5、多条件排序查询

data = Model.objects.filter(name="张三",class='语文').order_by("score")[0:10]


6、查询总条数

data = Model.objects.filter(class='语文').count()



7、查询指定字段

data = Model.objects.values('col1','col2','col3').filter(name='张三')


8、group By查询各类数据数量

data = Model.objects.values('class').annotate(total=Count('id')).all()



9、group By求各类数据的和

data = Model.objects.values('class').annotate(total=Sum('num')).all()


10、各类like查询

  • # 两边模糊查询
  • data = Model.objects.values('name').filter(school__contains='小学').all()
  • # 开始模糊
  • data = Model.objects.values('name').filter(school__startswith='南城').all()
  • # 结尾模糊
  • data = Model.objects.values('name').filter(school__endswith='学院').all()


11、between查询

data = Model.objects.values('name','class','age').filter(age__range=[10,12]).all()

12、大于 gt 小于 lt gte 大于等于 lte 小于等于

  • # 大于
  • data = Model.objects.filter(indate__gt='2020-01-01').all()
  • # 小于
  • data = Model.objects.filter(indate__lt='2020-01-01').all()
  • # 大于等于
  • data = Model.objects.filter(indate__gte='2020-01-01').all()
  • # 小于等于
  • data = Model.objects.filter(indate__lte='2020-01-01').all()

13、or条件查询

data = Model.objects.filter(Q(age__gt=15) | Q(sex='男'))

14、执行原生sql

  • sql = "select * from t_students where age = 9"
  • data = Model.objects.raw(sql)


15、添加数据

  • data = Model(
  • id = uuid.uuid4(),
  •        name = '张三',
  •        sex = '男',
  •        age = 13
  •    )
  • data.save()



16、更新数据

  • cus = Model.objects.filter(name='张三').all()
  • cus.update(age = 12)


17、删除数据

  • data= Model.objects.filter(name='张三')
  • data.delete()









目录
相关文章
|
2月前
|
SQL 安全 数据库
如何在Django中正确使用参数化查询或ORM来避免SQL注入漏洞?
如何在Django中正确使用参数化查询或ORM来避免SQL注入漏洞?
175 77
|
1月前
|
存储 缓存 Java
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
95 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
|
15天前
|
存储 人工智能 监控
时序数据库 TDengine 化工新签约:存储降本一半,查询提速十倍
化工行业在数字化转型过程中面临数据接入复杂、实时性要求高、系统集成难度大等诸多挑战。福州力川数码科技有限公司科技依托深厚的行业积累,精准聚焦行业痛点,并携手 TDengine 提供高效解决方案。
26 0
|
2月前
|
SQL 安全 数据库连接
除了使用Django的ORM,还能通过什么方式在Django中避免SQL注入漏洞?
除了使用Django的ORM,还能通过什么方式在Django中避免SQL注入漏洞?
47 17
|
2月前
|
SQL Java 数据库连接
【潜意识Java】MyBatis中的动态SQL灵活、高效的数据库查询以及深度总结
本文详细介绍了MyBatis中的动态SQL功能,涵盖其背景、应用场景及实现方式。
151 6
|
2月前
|
数据管理 数据库 数据安全/隐私保护
Django—同一项目不同app使用不同数据库
在Django项目中实现不同app使用不同数据库的配置,可以通过配置多数据库、创建数据库路由和配置路由来实现。通过这种方法,可以有效地将数据隔离到不同的数据库,提高数据管理的灵活性和系统的可扩展性。希望本文能为开发者在Django项目中使用多数据库提供清晰的指导。
30 4
|
2月前
|
缓存 关系型数据库 MySQL
【深入了解MySQL】优化查询性能与数据库设计的深度总结
本文详细介绍了MySQL查询优化和数据库设计技巧,涵盖基础优化、高级技巧及性能监控。
491 0
|
3月前
|
存储 缓存 网络协议
数据库执行查询请求的过程?
客户端发起TCP连接请求,服务端通过连接器验证主机信息、用户名及密码,验证通过后创建专用进程处理交互。服务端进程缓存以减少创建和销毁线程的开销。后续步骤包括缓存查询(8.0版后移除)、语法解析、查询优化及存储引擎调用,最终返回查询结果。
57 6
|
3月前
|
SQL JavaScript 程序员
数据库LIKE查询屡试不爽?揭秘大多数人都忽视的秘密操作符!
本文分析了因数据库中的不可见空白字符导致的数据查询问题,探讨了问题的成因与特性,并提出了使用 SQL 语句修复问题的有效方案。同时,总结了避免类似问题的经验和注意事项。
51 0
|
5月前
|
SQL Go 数据库
【速存】深入理解Django ORM:编写高效的数据库查询
【速存】深入理解Django ORM:编写高效的数据库查询
140 0

热门文章

最新文章