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() 自动将查询中的字段映射到模型上的字段。
books = Book.objects.raw('

本文介绍了在Django中如何使用原生SQL,包括三种方法:1) extra方法,作为ORM的补充;2) raw方法,执行原始SQL并返回模型实例;3) 直接执行自定义SQL,通过django.db.connections操作数据库。每种方法都有其适用场景和注意事项,如防止SQL注入和处理返回结果的方式。
最低0.47元/天 解锁文章
495

被折叠的 条评论
为什么被折叠?



