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