Django中查询筛选数据时,大多数是使用封装好的orm,其中有一些较为复杂的sql语句很难使用orm实现,因此在此引入Django中原生sql的使用方法
在Django中使用原生Sql主要有以下三种方法:
一:extra:结果集修改器,一种提供额外查询参数的机制
二:raw:执行原始sql并返回模型实例
三:直接执行自定义Sql
下面列举django文档中的例子
from django.db import models
class Book(models.Model):
name = models.CharField('书名')
price = models.IntegerField('价钱')
publish = models.CharField('出版社')
create_time = models.DateTimeField('上线日期')
1.extra:结果集修改器,是吗一种提供额外查询参数的机制
books= Book.objects.filter(publish='清华出版社').extra(where=['price>50'])
此方法适合用于orm难以实现的某个筛选条件,将这个条件单独选出,使用原生sql进行筛选。此方法也依然主要依靠与orm
谨慎使用,防止sql注入问题
2.raw:执行原始sql并返回模型实例
raw() 自动将查询中的字段映射到模型上的字段。
b