常用查询语句
all:查询所有
filter:条件查询
get:单条语句查询
order_by:排序查询
__set:映射查询(外键)
常见比较查询
__gt:大于
__gte:大于等于
__lt:小于
__lte:小于等于
__in:存在范围
__startswith:以什么开头
__endswith:以什么结尾
__range:范围
django模型自定义查询管理器
上述是django定义好的查询,如果想自定义,就需要重写manage,并将重写的类赋值给 objects,或者重新定义一个objects对象。
自定义查询管理器适用场景:少字段多频率表的插入和修改,或多频率表限制查询。
使用步骤
导入模块
重写manage方法
在模型类中使用重写的方法
使用方法,例:GoodType.object.addType('水产蔬菜')
aggregate:聚合查询
聚合查询是做数据分析的数据库基础,通常使用聚合函数完成聚合查询。
mysql可以进行聚合查询,常用的方法有:count,sum,avg,max和min。
django也有相似的操作,需要先导入需要的方法。
mysql的语句为select count(id) from Goods;
django的语句如下(可以修改字段名称):
annotate:分组查询
查询每个类型的平均价格。
mysql中的写法:
select AVG(price) from goods group_by goods_type
select count(price) from goods group_by goods_type
django中ORM的用法:
先导入包
>>> from django.db.models import Sum
>>> from django.db.models import Avg
>>> from Store.models import *按照goods_type分组,查询每个组价格的平均值
以goods_number分组,查询每个组价格的平均值
F 查询
F 查询,比较的是字段,当前查询条件只能和固定的值进行比较。
查询所有数量大于价格的商品
查询所有数量小于价格的商品
商品数量小于价格一半的数据(F查询可以进行数学运算)
Q 查询
filter的查询条件固定是and关系,Q的出现补充了filter的缺陷,Q查询可以进行与和或的逻辑查询。
filter查询商品数量为2并且价格为25的商品。
Q查询支持逻辑and(&)和or(|)
查询商品数量为2或商品价格为25的商品。
Q通常对同一个条件查,如:查询商品价格为130或者商品价格为100的商品。
raw:原生查询
通常为了提高查询效率,工作当中更支持原生查询,ORM只被作为数据插入,修改, 删除的方法。
query 查看sql语句