1、原生SQL用法概述
django可以执行原生SQL语句,主要分读和写两类,用法如下:
读(查):xxxModel.object.raw()写(增删改):connection.cursor()
2、应用案例
2.1 django执行原生SQL读操作
django内置方法中的raw(),可以帮助我们直接执行SQL的原生语句,返回QuerySet 集合对象。
# appName: test# tableName in model.py: Book# tableName in DB: test_bookfrom model import Bookbooks_obj_list = Book.objects.raw('select distinct id, book_name from test_book')for book_obj in books_obj_list:print(book_obj.id, book_obj.book_name)
2.2 django执行原生SQL写操作
django中使用游标cursor对数据库进行增删改操作,创建cursor类的构造函数创建cursor对象,再使用cursor对象,为保证在出现异常时能释放cursor资源,通常使用with语句进行创建操作
常用语法如下:
from django.db import connectionwith connection.cursor() as cur:cur.execute('SQL语句')
举例:
# 用SQL语句将id 为 9527 的书的出版社改为 "星爷出版社"from django.db import connection# UPDATEwith connection.cursor() as cur: cur.execute('update test_book set publishing_house="星爷出版社" where id=9527;')# DELETEwith connection.cursor() as cur:# 删除 id为10 的一条记录cur.execute('delete from test_book where id=10;')