Django进阶Model篇008 - 使用原生sql
注意:使用原生sql的方式主要目的是解决一些很复杂的sql不能用ORM的方式写出的问题。
一、extra:结果集修改器-一种提供额外查询参数的机制
二、执行原始sql并返回模型实例
三、直接执行自定义SQL:这种方式完全不依赖model,前面两种还是要依赖model
1.使用extra:查询人民邮电出版社出版并且价格大于50元的书籍
>>> Book.objects.filter(publisher__name='人民邮电出版社').extra(where=['price>50'])
>>> Book.objects.filter(publisher__name='人民邮电出版社',price__gt=50)
2.使用raw
>>> books=Book.objects.raw('select * from hello_book')
>>> for book in books:
... print book
3.自定义sql
>>> from django.db import connection
>>> cursor = connection.cursor()
>>> cursor.execute("insert into hello_author(name) VALUES ('郭敬明')")
>>> cursor.execute("update hello_author set name='韩寒' WHERE name='郭敬明'")
>>> cursor.execute("delete from hello_author where name='韩寒'")
>>> cursor.execute("select * from hello_author")
>>> cursor.fetchone()
>>> cursor.fetchall()
***微信扫一扫,关注“python测试开发圈”,了解更多测试教程!***
Django进阶Model篇008 - 使用原生sql的更多相关文章
- Django进阶Model篇—数据库操作(ORM)
一.数据库配置 django 默认支持sqlite.mysql.oracle.postgresql数据库,像db2和sqlserver之类的数据库需要第三方的支持,具体详见https://docs.d ...
- Django进阶Model篇005 - QuerySet常用的API
django.db.models.query.QuerySet QuerySet特点: 1.可迭代 2.可切片 查询相关API 1.get(**kwargs):返回与所给的筛选条件相匹配的对象,返回结 ...
- Django进阶Model篇004 - ORM常用操作
一.增加 create和save方法 实例: 1.增加一条作者记录 >>> from hello.models import * >>> Author.object ...
- Django进阶Model篇007 - 聚集查询和分组查询
接着前面的例子,举例聚集查询和分组查询例子如下: 1.查询人民邮电出版社出了多少本书 >>> Book.objects.filter(publisher__name='人民邮电出版社 ...
- Django进阶Model篇002 - 模型类的定义
一.创建数据模型. 实例: 作者模型:一个作者有姓名. 作者详情模型:把作者的详情放到详情表,包含性别.email 地址和出生日期,作者详情模型与作者模型之间是一对一的关系(OneToOneField ...
- Django进阶Model篇001 - mysql 数据库的配置
django 默认支持sqlite.mysql.oracle.postgresql数据库,像db2和sqlserver之类的数据库需要第三方的支持,具体详见: https://docs.djangop ...
- Django进阶Model篇003 - 数据库同步技巧
一.认识一个目录 目录名:migrations 作用:用来存放通过makemigrations命令生成的数据库脚本,不熟悉的情况下,里面生成的脚本不要轻易修改.app目录下必须要有migrations ...
- Django进阶Model篇006 - 多表关联查询
接着前面的例子,举例多表查询实例如下: 1.查询作战的所有完整信息. >>> AuthorDetail.objects.values('sex','email','address', ...
- Django基础——Model篇(一)
到目前为止,当程序涉及到数据库相关操作时,我们一般都会这么操作: (1)创建数据库,设计表结构和字段 (2)使用MySQLdb来连接数据库,并编写数据访问层代码 (3)业务逻辑层去调 ...
随机推荐
- IO流入门-第十二章-ObjectInputStream_ObjectOutputStream
DataInputStream和DataOutputStream基本用法和方法示例,序列化和反序列化 import java.io.Serializable; //该接口是一个“可序列化”的 ,没有任 ...
- delphi 模拟POST提交数据
unit GetHttpInfo; interface uses Classes, WinINet, Sysutils, windows, IDURI, IdSSLOpenSSL , IdBaseCo ...
- tomcat访问管理页面出现:403 Access Denied 解决方法
点击红色框框出现以下403错误 打开context.xml文件 vim /usr/local/tomcat/webapps/manager/META-INF/context.xml <Conte ...
- 前端 CSS 边框
border 边框 solid 实体的 red 边框什么颜色 <!DOCTYPE html> <html lang="en"> <head> & ...
- python中self cls init的理解
原创文章,未经允许禁止转载! python中self cls init的理解 python中self cls init的理解
- HihoCoder - 1339 Dice Possibility(概率dp)
题意:求用N(1<=N<=100)个骰子掷出M(1<=M<=600)的概率 分析:直接求概率可能出现6^100次方,会爆精度.可以用一个数组dp[i][j]记录用i个骰子掷出j ...
- IO 复习笔记
输入流,从源到流中:输出流,从流到目的地. 1. 操作文件: 1).写入:FileOutputStream或者FileWriter 2).读取:FileInputStream或者Fil ...
- javascript Date对象 之 date初始化
javascript Date对象 --> 日期初始化: 总结: 日期初始化的 方式: 1. new Date( yyyy, M(+), d(+), h(+), m(+), s(+) ); 2. ...
- Linux下的查找命令which、whereis、locate、find(6/20)
Linux下查找相关命令主要有以下4个:which.whereis.locate.find. (1)which [-a] cmdname1 cmdname2 ...... 命令参数: -n ...
- 002. MySQL复制操作
#### 1.Setting the Replication Master Configuration On a replication master, you must enable binary ...