python的django原生sql的实现

在Django框架下,当Model无法满足特定需求,如存储过程或多表连接时,可以采用原生SQL。Django提供两种执行原生SQL的方式:使用Manager.raw()返回Model实例,或直接执行SQL忽略Model。为防止SQL注入,建议使用参数化查询。本文将介绍如何通过Manager.raw()和django.db.connections执行原生SQL,并提供了相关示例和参考资料链接。
摘要由CSDN通过智能技术生成

当model满足不了需求的时候(比如:存储过程、多表连接等),可以使用原生sql。django提供了两种方法使用原生的sql:你可以使用Manager.raw()执行原生sql,它会返回model实例,或者也可以直接执行原生sql,完全忽略model。警告:使用原生sql的时候,要尽可能的使用参数的形式以防止用户进行sql注入攻击。


Manager.raw()执行原生sql

使用raw()方法执行原生sql,返回model实例:Manager.raw(raw_query, params=None, translations=None)。

举个列子:

class Person(models.Model):
    first_name = models.CharField(...)
    last_name = models.CharField(...)
    birth_date = models.DateField(...)

执行原生sql:

>>> for p in Person.objects.raw('SELECT * FRO
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值