Django 之 查看执行的sql语句
前提:
我的app名称为core,models.py内容如下:
# coding:utf-8
from django.db import models # Create your models here.
class Province(models.Model):
name = models.CharField(u'省份名称',max_length=32)
code = models.IntegerField(verbose_name=u'区号', unique=True) def __unicode__(self):
return self.name class Meta:
verbose_name = u'省份列表'
verbose_name_plural = u'省份列表'
法I:
>>> from core.models import Province
>>> print Province.objects.all().query
SELECT `core_province`.`id`, `core_province`.`name`, `core_province`.`code` FROM `core_province`
该方法只能查看select语句,对于其他更新保存的语句不能查看,会报错。
>>> from core.models import Province
>>> p = Province(name=u'广州', code='')
>>> p.save().query
Traceback (most recent call last):
File "<console>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'query'
>>> p.save()
也就是说只有 Queryset 有query方法。
法II:
>>> from core.models import Province
>>> from django.db import connection
>>> p = Province(name=u'河南', code='')
>>> p.save()
>>> print connection.queries
[{u'time': u'0.439', u'sql': u"INSERT INTO `core_province` (`name`, `code`) VALUES ('\u5e7f\u5dde', 20)"},
{u'time': u'0.056', u'sql': u"UPDATE `core_province` SET `name` = '\u5e7f\u5dde', `code` = 20 WHERE `core_province`.`id` = 3 "},
{u'time': u'0.102', u'sql': u"INSERT INTO `core_province` (`name`, `code`) VALUES ('\u6cb3\u5357', 371)"}]
该方法会打印出所有执行过的sql语句,包括我在实验方法I时所执行的两个p.save()(第一个save()为INSERT,第二个save()为UPDATE)也都打印出来了。
Django 之 查看执行的sql语句的更多相关文章
- django框架 - 实时查看执行的sql语句
django框架采用的ORM模型,我们可以通过mysql的日志记录实时看到执行的sql语句,具体步骤如下: 第一步:找到mysql的配置文件 第二步:编辑mysql配置文件 第三步:重启mysql 第 ...
- Python Django 之 直接执行自定义SQL语句(一)
一.执行自定义SQL方法 1.Executing custom SQL directly 直接执行自定义SQL,这种方式可以完全避免数据模型,而是直接执行原始的SQL语句. 2.Manage ...
- Django之ORM执行原生sql语句
django中的ORM提供的操作功能有限,在模型提供的查询API不能满足实际工作需要时,可以在ORM中直接执行原生sql语句. Django 提供两种方法使用原生SQL进行查询:一种是使用raw()方 ...
- Python Django 之 直接执行自定义SQL语句(二)
转载自:https://my.oschina.net/liuyuantao/blog/712189 一般来说,最好用 Django 自带的模型来实现这些操作.这里仅仅只是为了学习使用原始 SQL 而做 ...
- 在django中,执行原始sql语句
extra()方法 结果集修改器,一种提供额外查询参数的机制 使用extra: 1:Book.objects.filter(publisher__name='广东人员出版社').extra(where ...
- laravel查看执行的sql语句
方法一: 我们有时候想测试一段代码生产的 SQL 语句,比如: 我们想看 App\User::all(); 产生的 SQL 语句,我们简单在 routes.php 做个实验即可: //app/Http ...
- python学习-- 在django中,执行原始sql语句
from django.shortcuts import render, redirect from news.models import Article, Column def test(reque ...
- MySql使用show processlist查看正在执行的Sql语句
今天上班例行的查看了下服务器的运行状况,发现服务器特卡,是mysqld这个进程占用CPU到了99%导致的. 比较好奇是那个程序在使用mysql导致cpu这么高的,通过show processlist命 ...
- mysql查看正在执行的sql语句
有2个方法: 1.使用processlist,但是有个弊端,就是只能查看正在执行的sql语句,对应历史记录,查看不到.好处是不用设置,不会保存. -- use information_schema; ...
随机推荐
- cocos多点触控实效注意事项
一定要设置AppController.mm的 [eaglView setMultipleTouchEnabled:YES];
- php +ajax
index.php <html> <head> <meta charset="UTF-8"> <title>Ajax+PHP< ...
- HDFS的工作原理(读和写操作)
工作原理: NameNode和DateNode,NameNode相当于一个管理者,它管理集群内的DataNode,当客户发送请求过来后,NameNode会 根据情况指定存储到哪些DataNode上,而 ...
- JavaScript 立即执行函数
js中(function(){…})()立即执行函数写法理解 javascript和其他编程语言相比比较随意,所以javascript代码中充满各种奇葩的写法,有时雾里看花,当然,能理解各型各色的写法 ...
- CentOS7新特性
一.CentOS7的4中模式 CentOS7里不在有0-6启动级别,而是4个target 1.graphical.target:多人模式,支持图形和命令行两种登录,对应之前的3,5级别 2.multi ...
- less和sass
sass 总体来说应用是和less差不多的,但是也有所不同 sass是用“$”符号来命名 然后加值来先引入后使用的方式. 同时也应该注意到的是sass有两种后缀名文件:一种后缀名为sa ...
- 线程安全及Python中的GIL
线程安全及Python中的GIL 本博客所有内容采用 Creative Commons Licenses 许可使用. 引用本内容时,请保留 朱涛, 出处 ,并且 非商业 . 点击 订阅 来订阅本博客. ...
- XSD(XML Schema Definition)用法实例介绍以及C#使用xsd文件验证XML格式
XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD),作用是定义 XML 文档的合法构建模块,类似 DTD,但更加强大. 作用有: ①定义 ...
- JAVA之Forward 和 Redirect的区别
1.从地址栏显示来说forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址 ...
- kylin(一): 原理架构
由eBay开源的一个大数据OLAP框架,2014年11月加入了Apache,项目名字也改成了"Apache Kylin",Apache Kylin是唯一来自中国的Apache顶级开 ...