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









目录
相关文章
|
6月前
|
人工智能 安全 机器人
无代码革命:10分钟打造企业专属数据库查询AI机器人
随着数字化转型加速,企业对高效智能交互解决方案的需求日益增长。阿里云AppFlow推出的AI助手产品,借助创新网页集成技术,助力企业打造专业数据库查询助手。本文详细介绍通过三步流程将AI助手转化为数据库交互工具的核心优势与操作指南,包括全场景适配、智能渲染引擎及零代码配置等三大技术突破。同时提供Web集成与企业微信集成方案,帮助企业实现便捷部署与安全管理,提升内外部用户体验。
722 12
无代码革命:10分钟打造企业专属数据库查询AI机器人
|
8月前
|
Cloud Native 关系型数据库 分布式数据库
|
8月前
|
并行计算 关系型数据库 MySQL
如何用 esProc 将数据库表转储提速查询
当数据库查询因数据量大或繁忙变慢时,可借助 esProc 将数据导出为文件进行计算,大幅提升性能。以 MySQL 的 3000 万行订单数据为例,两个典型查询分别耗时 17.69s 和 63.22s。使用 esProc 转储为二进制行存文件 (btx) 或列存文件 (ctx),结合游标过滤与并行计算,性能显著提升。例如,ctx 并行计算将原查询时间缩短至 0.566s,TopN 运算提速达 30 倍。esProc 的简洁语法和高效文件格式,特别适合历史数据的复杂分析场景。
|
7月前
|
人工智能 数据挖掘 API
基于neo4j数据库和dify大模型框架的rag模型搭建——后续补充
基于neo4j数据库和dify大模型框架的rag模型搭建——后续补充
841 21
基于neo4j数据库和dify大模型框架的rag模型搭建——后续补充
|
7月前
|
Java 数据库 Docker
基于neo4j数据库和dify大模型框架的rag模型搭建
基于neo4j数据库和dify大模型框架的rag模型搭建
2129 35
|
4月前
|
SQL 存储 数据库
Django模型查询与性能调优:告别N+1问题
本文详解Django数据库查询基础与优化技巧,涵盖QuerySet使用、关联查询(一对多/多对多)、N+1查询问题及解决方案(select_related、prefetch_related)、高级查询方法及项目实战中的数据权限控制实现。
207 0
|
5月前
|
SQL XML Java
配置Spring框架以连接SQL Server数据库
最后,需要集成Spring配置到应用中,这通常在 `main`方法或者Spring Boot的应用配置类中通过加载XML配置或使用注解来实现。
502 0
|
8月前
|
SQL 数据库连接 数据库
在C++的QT框架中实现SQLite数据库的连接与操作
以上就是在C++的QT框架中实现SQLite数据库的连接与操作的基本步骤。这些步骤包括创建数据库连接、执行SQL命令、处理查询结果和关闭数据库连接。在实际使用中,你可能需要根据具体的需求来修改这些代码。
529 14
|
9月前
|
SQL 关系型数据库 MySQL
如何优化SQL查询以提高数据库性能?
这篇文章以生动的比喻介绍了优化SQL查询的重要性及方法。它首先将未优化的SQL查询比作在自助餐厅贪多嚼不烂的行为,强调了只获取必要数据的必要性。接着,文章详细讲解了四种优化策略:**精简选择**(避免使用`SELECT *`)、**专业筛选**(利用`WHERE`缩小范围)、**高效联接**(索引和限制数据量)以及**使用索引**(加速搜索)。此外,还探讨了如何避免N+1查询问题、使用分页限制结果、理解执行计划以及定期维护数据库健康。通过这些技巧,可以显著提升数据库性能,让查询更高效流畅。