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月前
|
并行计算 关系型数据库 MySQL
如何用 esProc 将数据库表转储提速查询
当数据库查询因数据量大或繁忙变慢时,可借助 esProc 将数据导出为文件进行计算,大幅提升性能。以 MySQL 的 3000 万行订单数据为例,两个典型查询分别耗时 17.69s 和 63.22s。使用 esProc 转储为二进制行存文件 (btx) 或列存文件 (ctx),结合游标过滤与并行计算,性能显著提升。例如,ctx 并行计算将原查询时间缩短至 0.566s,TopN 运算提速达 30 倍。esProc 的简洁语法和高效文件格式,特别适合历史数据的复杂分析场景。
|
3月前
|
SQL 关系型数据库 MySQL
如何优化SQL查询以提高数据库性能?
这篇文章以生动的比喻介绍了优化SQL查询的重要性及方法。它首先将未优化的SQL查询比作在自助餐厅贪多嚼不烂的行为,强调了只获取必要数据的必要性。接着,文章详细讲解了四种优化策略:**精简选择**(避免使用`SELECT *`)、**专业筛选**(利用`WHERE`缩小范围)、**高效联接**(索引和限制数据量)以及**使用索引**(加速搜索)。此外,还探讨了如何避免N+1查询问题、使用分页限制结果、理解执行计划以及定期维护数据库健康。通过这些技巧,可以显著提升数据库性能,让查询更高效流畅。
|
3月前
|
数据库 Python
【YashanDB知识库】python驱动查询gbk字符集崖山数据库CLOB字段,数据被驱动截断
【YashanDB知识库】python驱动查询gbk字符集崖山数据库CLOB字段,数据被驱动截断
|
3月前
|
数据库
【YashanDB知识库】数据库用户所拥有的权限查询
【YashanDB知识库】数据库用户所拥有的权限查询
|
3月前
|
存储 运维 监控
百万指标,秒级查询,零宕机——时序数据库 TDengine 在 AIOps 中的硬核实战
本篇文章详细讲述了七云团队在运维平台中如何利用 TDengine 解决海量时序数据存储与查询的实际业务需求。内容涵盖了从数据库选型、方案落地到业务挑战及解决办法的完整过程,特别是分享了升级 TDengine 3.x 时的实战经验,给到有需要的小伙伴参考阅读。
106 1
|
3月前
|
缓存 NoSQL 关系型数据库
WordPress数据库查询缓存插件
这款插件通过将MySQL查询结果缓存至文件、Redis或Memcached,加速页面加载。它专为未登录用户优化,支持跨页面缓存,不影响其他功能,且可与其他缓存插件兼容。相比传统页面缓存,它仅缓存数据库查询结果,保留动态功能如阅读量更新。提供三种缓存方式选择,有效提升网站性能。
69 1
|
3月前
|
数据库
|
8月前
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
271 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
|
12月前
|
关系型数据库 MySQL 数据库
Django与MySQL:配置数据库的详细步骤
Django与MySQL:配置数据库的详细步骤
|
缓存 运维 Serverless
Serverless 应用引擎产品使用合集之基于django应用模板创建的FC,如何配置数据库
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。

热门文章

最新文章