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()
相关推荐
yangchanghua1111 小时前
pgsql 如何查询今天范围内的数据(当天0点0分0秒 - 当天23点59分59秒....)
数据库·pgsql
larance1 小时前
SQLAlchemy 的异步操作来批量保存对象列表
数据库·python
python_chai1 小时前
从数据汇总到高级分析,SQL 查询进阶实战(下篇)—— 分组、子查询与窗口函数全攻略
数据库·sql·mysql
在努力的前端小白2 小时前
Spring Boot 敏感词过滤组件实现:基于DFA算法的高效敏感词检测与替换
java·数据库·spring boot·文本处理·敏感词过滤·dfa算法·组件开发
未来之窗软件服务2 小时前
自建知识库,向量数据库 (九)之 量化前奏分词服务——仙盟创梦IDE
数据库·仙盟创梦ide·东方仙盟·自建ai·ai分词
冒泡的肥皂5 小时前
MVCC初学demo(一
数据库·后端·mysql
.Shu.6 小时前
Redis Reactor 模型详解【基本架构、事件循环机制、结合源码详细追踪读写请求从客户端连接到命令执行的完整流程】
数据库·redis·架构
薛晓刚9 小时前
当MySQL的int不够用了
数据库
SelectDB技术团队9 小时前
Apache Doris 在菜鸟的大规模湖仓业务场景落地实践
数据库·数据仓库·数据分析·apache doris·菜鸟技术
星空下的曙光10 小时前
mysql 命令语法操作篇 数据库约束有哪些 怎么使用
数据库·mysql