Django框架数据库ORM查询操作

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='00036240dc9111e7857bf4cc23480335')

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()
相关推荐
King.6248 分钟前
数据服务化 VS 数据中台:战略演进中的价值重构
大数据·数据库·sql·oracle·重构
Elastic 中国社区官方博客9 分钟前
Elasticsearch:AI 助理 - 从通才到专才
大数据·数据库·人工智能·神经网络·elasticsearch·搜索引擎·全文检索
花千树-01031 分钟前
MySQL 数据库备份和恢复全指南
数据库·mysql
·薯条大王35 分钟前
Node.js 操作 MySQL 数据库
javascript·数据库·mysql
Java_SuSheng1 小时前
关于SQLite轻量数据库的研究
java·数据库·spring boot·sqlite·mybatis
maomi_95262 小时前
数据库学习通期末复习二
服务器·数据库
努力努力再努力wz2 小时前
【Linux实践系列】:用c/c++制作一个简易的进程池
linux·运维·数据库·c++·c
Chandler244 小时前
一图掌握 MySQL 核心要点
数据库·mysql
CodeJourney.4 小时前
从PPT到DeepSeek开启信息可视化的全新之旅
数据库·人工智能·算法·excel·流程图
GOTXX10 小时前
【Qt】Qt Creator开发基础:项目创建、界面解析与核心概念入门
开发语言·数据库·c++·qt·图形渲染·图形化界面·qt新手入门