首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

django 1.8 官方文档翻译: 2-5-2 进行原始sql查询

网站:http://python.usyiyi.cn/django/index.html 进行原始sql查询 模型查询API不够用情况下,你可以使用原始sql语句。...django提供两种方法使用原始sql进行查询:一种是使用Manager.raw()方法,进行原始查询并返回模型实例;另一种是完全避开模型层,直接执行自定义sql语句。...警告 编写原始sql语句,应该格外小心。每次使用时候,都要确保转义了参数任何控制字符,以防受到sql注入攻击。更多信息请参阅防止sql注入。...警告 如果你mysql执行查询,注意在类型不一致时候,mysql静默类型强制可能导致意想不到结果发生。...你可以查询语句中使用%s占位符,或者对于字典使用%(key)占位符(key会被替换成字典中键key值),无论你数据库引擎是什么。这样占位符会被替换成参数表中正确参数。

90120

django执行原始查询sql,并返回Dict字典例子

很多时候执行sql语句,数据比djangomodel来快,但并不想关心返回字段,例如你可以执行:select * from product这种sql,这里个方法将会返回与数据库列名相同键值对 ,...django时候,有些需求需要特别高查询效率,所以需要使用原生sql语句查询,但是查询结果一般是一个元组嵌套元组。...为了处理方便,需要从数据库查询直接返回字典类型数据。...项目的settings.py文件里修改数据库配置数据库引擎 DATABASES = { 'default': { 'ENGINE': 'Test.mysql', # 指定数据库驱动刚刚创建mysql...以上这篇django执行原始查询sql,并返回Dict字典例子就是小编分享给大家全部内容了,希望能给大家一个参考。

1.5K20
您找到你想要的搜索结果了吗?
是的
没有找到

Django—模型

新建查询集中,缓存为,首次对查询集求值,会发生数据库查询django会将查询结果存在查询缓存,并返回请求结果,接下来对查询集求值将重用缓存结果。...限制查询集 可以对查询集进行取下标或切片操作,等同于sqllimit和offset子句。   注意:不支持负数索引。 对查询集进行切片返回一个新查询集,不会立即执行查询。...通过对象执行关联查询 定义模型类,可以指定三种关联关系,最常用是一对多关系,如本例"图书-英雄"就为一对多关系。...hero.hbook 通过模型类执行关联查询- 由多模型类条件查询一模型类数据: 语法如下: 关联模型类名小写__属性名__条件运算符=值   如果没有"__运算符"部分,表示等于,结果sqlinner...自定义管理器类主要用于两种情况: 1.修改原始查询集,重写all()方法 2.向管理器类添加额外方法,如向数据库插入数据。 1.修改原始查询集,重写all()方法。

6.1K21

Django 2.1.7 查询集 QuerySet

新建查询集中,缓存为,首次对查询集求值,会发生数据库查询django会将查询结果存在查询缓存,并返回请求结果,接下来对查询集求值将重用缓存结果。...示例一:经过存储,可以重用查询集,第二次使用缓存数据。...] 使用这种方式读取查询集,访问mysql执行SQL次数只有第一次读取时候执行。...', 'mongodb'] 可以看到每次读取list数据,都进行这个查询执行,所以mysql执行日志有两次,如下: 限制查询集 可以对查询集进行取下标或切片操作,等同于sqllimit...” 对查询集进行切片返回一个新查询集,不会立即执行查询

74320

Django 2.1.7 查询集 QuerySet

新建查询集中,缓存为,首次对查询集求值,会发生数据库查询django会将查询结果存在查询缓存,并返回请求结果,接下来对查询集求值将重用缓存结果。...示例一: 经过存储,可以重用查询集,第二次使用缓存数据。...] 使用这种方式读取查询集,访问mysql执行SQL次数只有第一次读取时候执行。...', 'mongodb'] 可以看到每次读取list数据,都进行这个查询执行,所以mysql执行日志有两次,如下: 限制查询集 可以对查询集进行取下标或切片操作,等同于sqllimit和offset...对查询集进行切片返回一个新查询集,不会立即执行查询

1.1K10

MySQLNull会导致5个问题,个个致命!

数据库原始数据如下: ? 从上述结果可以看出手机号一列 10 条数据都是不同,但查询结果却为 8。...解决方案 要解决以上问题,只需要在查询结果拼加上 NULL 值结果即可,执行 SQL 如下: select * from person where name'Java' or isnull(...4.导致指针异常 如果某列存在 NULL 值,可能会导致 sum(column) 返回结果 NULL 而非 0,如果 sum 查询结果 NULL 就可以能会导致程序执行时空指针异常(NPE)...当查询结果 NULL 而非 0 ,就可以能导致指针异常。...然后我们用 explain 来分析查询计划,看当 name 中有 NULL 值是否会影响索引选择。 explain 执行结果如下图所示: ?

1.7K20

MySQL全部知识点(2)

这样用户就不用再为是否有主键是否重复而烦恼了。当主键设置自动增长没有给出主键值,主键值会自动生成,而且是最大主键值+1,也就不会出现重复主键可能了。...(10) ); 当sname字段指定为非向stu表插入记录,必须给sname字段指定值,否则会报错: INSERT INTOstu(sid) VALUES(1); 插入记录sname没有指定值...注意,mysqldump命令是Windows控制台下执行,无需登录mysql!!! 2 执行SQL脚本 执行SQL脚本需要登录mysql,然后进入指定数据库,才可以执行SQL脚本!!!...执行SQL脚本不只是用来恢复数据库,也可以平时编写SQL脚本,然后使用执行SQL 脚本来操作数据库!大家都知道,黑屏下编写SQL语句,就算发现了错误,可能也不能修改了。...所以我建议大家使用脚本文件来编写SQL代码,然后执行之! SOURCE C:\mydb1.sql ? 注意,执行脚本需要先行核查当前数据库是否与脚本文件语句有冲突!

1.9K70

SQL注入几种类型和原理

注意:以下这些类型实在slqi-labs环境(也就是MySQL)下实验,SQL是所有关系型数据库查询语言,针对不同数据库SQL语法会有不同,注入时语句也会有所不同。...判断出列位置页面寻找回显位置,这里运用SQL一个特性。 ? 这个特性有什么用?...页面代码只返回第一条结果,UNION SELECT 获取结果无法输出到页面,可以构造不存在ID,使第一条语句查询结果,返回 UNION SELECT获取结果。 ? ?...语句出错返回错误信息,错误信息返回数据库内容,即可实现SQL注入。...通过构造语句,来判断数据库信息正确性,通过页面返回 ”真“ 和 ”假“ 来识别判断是否正确

5.2K52

Django学习笔记之Queryset详解

with the headline Test")  同样不建议这种方法判断是否,而应该使用QuerySet.exists(),查询效率高。...、改、查都是可以用,如order by、 like、in、join、union、and、or、not等等,我们以查询例,说一下django如何映射SQL这些关键字(查、删、改这些关键字使用方法基本相同...只返回主表(即Author表)所有字段值,即使查询关联了其它表,关联表字段也不会返回,只有当我们通过Author instance用关联表Django才会再次查询数据库获取值。...看下面两段代码,这两段代码1.1提到过。代码1遍历a前,先执行a对应SQL,拿到数据,然后再遍历a,而遍历过程,每次都还要查询数据库获取关联表。...select_related是用select ……join来返回关联表字段,而prefetch_related是用多条SQL语句形式查询,一般,一条语句用IN来调用上一句话返回结果

2.7K30

Django 模型查询2.3

简介 查询集表示从数据库获取对象集合 查询集可以含有零个、一个或多个过滤器 过滤器基于所给参数限制查询结果Sql角度,查询集和select语句等价,过滤器像where和limit子句 接下来主要讨论如下知识点...查询集 字段查询:比较运算符,F对象,Q对象 查询管理器上调用过滤器方法会返回查询查询集经过过滤器筛选返回新查询集,因此可以写成链式过滤 惰性执行:创建查询集不会带来任何数据库访问...():返回第一个对象 last():返回最后一个对象 exists():判断查询集中是否有数据,如果有则返回True 限制查询查询集返回列表,可以使用下标的方式进行限制,等同于sqllimit和...,[0:1].get()引发DoesNotExist异常 查询缓存 每个查询集都包含一个缓存来最小化对数据库访问 新建查询集中,缓存为,首次对查询集求值,会发生数据库查询django会将查询结果存在查询缓存...,会合并为And进行 需要进行or查询,使用Q()对象 Q对象(django.db.models.Q)用于封装一组关键字参数,这些关键字参数与“比较运算符”相同 from django.db.models

2.3K20

05.Django基础五之django模型层(一)单表操作

类似 CharField, 必须要有maxlength参数. '''   更多参数: (1)null 如果True,Django 将用NULL 来在数据库存储值。...django 会在相应 app migration文件夹下面生成 一个python脚本文件 执行 python manager.py migrte django才会生成数据库表,...有时执行 migrate 时候如果发现没有生成相应表,可以看看在 django-migrations表中看看 脚本是否已经执行了, 可以删除 django-migrations 表记录..., Django 删除对象,会模仿 SQL 约束 ON DELETE CASCADE 行为,换句话说,删除一个对象也会删除与它相关联外键对象。...查询价格100到200之间所有书籍名称及其价格 5 查询所有人民出版社出版书籍价格(从高到低排序,去重)   关于django连接mysql指定严格模式配置 DATABASES = {

2.9K10

MySQL中一条更新SQL如何执行

查询缓存:MySQL 得到一个执行请求,会首先去 查询缓存 查找,是否执行过这条 SQL 语句,之前执行语句以及结果会以 key-value 对形式,被直接放在内存。...key 是查询语句,value 是查询结果。如果通过 key 能够查找到这条 SQL 语句,直接返回 SQL 执行结果。若存在缓存,就会继续后面的执行阶段。...执行完成执行结果就会被放入查询缓存。优点是效率高。...但是查询缓存不建议使用, 因为 MySQL 对某张表进行了更新操作,那么所有的查询缓存就会失效,对于更新频繁数据库来说,查询缓存命中率很低。...如果 SQL 语句不正确,就提示:You have an error in your SQL suntax 优化器:经过分析器分析SQL 就合法了,但在执行之前,还需要进行优化器处理,优化器会判断使用了哪种索引

90810

MySQL - 体系结构初探

查询缓存,这是 MySQL 一个可优化查询地方,如果开启了 Query Cache 且查询缓存过程查询到完全相同 SQL 语句,则将查询结果直接返回给客户端;如果没有开启Query Cache...⑤查询执行引擎执行 SQL 语句,此时查询执行引擎会根据 SQL 语句中表存储引擎类型,以及对应 API 接口与底层存储引擎缓存或者物理文件交互情况,得到查询结果,由MySQL Server 过滤查询结果缓存并返回给客户端...若开启了 Query Cache,这时也会将SQL 语句和结果完整地保存到 Query Cache ,以后若有相同 SQL 语句执行则直接返回结果。...Qcache_inserts: 表示多少次未命中然后插入,意思是新来SQL请求缓存未找到,不得不执行查询处理,执行查询处理结果insert到查询缓存。...这样情况次数,次数越多,表示查询缓存应用到比较少,效果也就不理想。当然系统刚启动查询缓存是,这很正常。

37920

MySQL中一条更新SQL如何执行

查询缓存:MySQL 得到一个执行请求,会首先去 查询缓存 查找,是否执行过这条 SQL 语句,之前执行语句以及结果会以 key-value 对形式,被直接放在内存。...key 是查询语句,value 是查询结果。如果通过 key 能够查找到这条 SQL 语句,直接返回 SQL 执行结果。若存在缓存,就会继续后面的执行阶段。...执行完成执行结果就会被放入查询缓存。优点是效率高。...但是查询缓存不建议使用, 因为 MySQL 对某张表进行了更新操作,那么所有的查询缓存就会失效,对于更新频繁数据库来说,查询缓存命中率很低。...如果 SQL 语句不正确,就提示:You have an error in your SQL suntax 优化器:经过分析器分析SQL 就合法了,但在执行之前,还需要进行优化器处理,优化器会判断使用了哪种索引

1.2K10

Python后端基础面试题

两个栈实现一个队列 入队:元素进栈A 出队:先判断栈B是否则将栈A元素 pop 出来并 push 进栈B,再栈B出栈,如不为则栈B直接出栈 26.使用yield实现一个协程 def consumer...) 前后, 自动执行代码 函数 MySQL 提供内置函数, 还可以自定义函数 (实现程序员需要SQL逻辑处理) 视图 视图是由查询结果形成一张虚拟表, 可以简化查询 存储过程...把一段代码封装起来, 当要执行这一段代码时候, 可以通过调用该存储过程来实现 经过第一次编译再次调用不需要再次编译, 比一个个执行 SQL 语句效率高 3.索引种类 普通索引: 仅加速查询...可以看到是否命中索引,计划能命中哪些,实际命中了哪些,执行顺序 6.慢日志 用来记录在MySQL响应时间超过阀值语句,具体指运行时间超过long_query_time值SQL,则会被记录到慢查询日志...有外键存在, 可以很好减少数据库请求次数, 提高性能 select_related 通过多表 join 关联查询, 一次性获得所有数据, 只执行一次SQL查询 prefetch_related 分别查询每个表

84730

JDBC:深入理解PreparedStatement和Statement

对就是Statement,公开课老师说:“同一条sql语句(字符串都是相同Statement对象多次执行时,Statement只会对当前sql文编译一次,编译存储Statement之后执行过程...当客户发送一条SQL语句给服务器,服务器总是需要校验SQL语句语法格式是否正确,然后把SQL语句编译成可执行函数,最后才是执行SQL语句。...如果你不确定普通sql语句函数是否被存储,那要怎么做呢?? 其实还是一个道理,查看MySQL日志记录:检查第二次执行相同sql语句是否是直接通过execute来进行查询。...预编译前有检查sql语句语法是否正确操作。只有数据库服务器支持预编译功能,JDBC驱动才能够使用数据库预编译功能,否则会报错。...已经配置好了数据库连接参数情况下,Statement对于MySQL数据库是不会对编译函数进行缓存数据库不会缓存函数,Statement也不会缓存函数key,所以多次执行相同一条sql语句时候

71031

MySQL【第六章】——优化器及执行计划 - Explain

一、MySQLSQL语句执行过程   参考资料:   1.客户端发送一条查询给服务器。   2.服务器先检查查询缓存,如果命中了缓存,则立刻返回存储缓存结果。否则进入下一阶段。  ...当判断缓存是否命中MySQL不会进行解析查询语句,而是直接使用SQL语句和客户端发送过来其他原始信息。所以,任何字符上不同,例如空格、注解等都会导致缓存不命中。...因为查询缓存在数据生成时候就开始尝试缓存数据,所以当结果全部返回MySQL才知道查询结果是否超出限制。超出之后,才会将结果查询缓存删除。...一条查询可以有多种执行方法,最后都是返回相同结果。优化器作用就是找到这其中最好执行计划。 生成执行计划过程会消耗较多时间,特别是存在许多可选执行计划。...MySQL结果集返回给客户端是一个增量、逐步返回过程。查询生成第一条结果MySQL就可以开始向客户端逐步返回结果集了。 上述理论知识可能有点麻!

89920

Django ORM 知识概要

() 布尔型 允许 models.BooleanField() 不允许 models.NullBooleanField() 整型 5个字节正整数models.PositiveSmallIntegerField...SQL等价物:RESTRICT。 SET_NULL:将引用设置NULL(要求字段可以为),当字段设置null=True才可以使用 SET_DEFAULT:设置默认值。...只有当字段设置了default参数才能使用 SQL等价物:SET DEFAULT。 SET(value 或者 函数返回值):设置给定值。这个不是SQL标准一部分,完全由Django处理。...permissions 定义权限 managed 是否按照Django规则管理模型类 默认是True unique_together=()/((),()) 对应MySQL联合唯一约束 app_label...反向查询 annotate() 使用聚合计数,求和,平均数,raw() 执行原生SQL annotate()对分组结果进行统计 Model.objects.get().子表表名 _set.all

1.8K20

MySQL优化

当使用该方式数据库从库 **SQL** 线程就可以并发执行但在大部分情况下都是单库多表情况,一个数据库可以实现并行复制主要是因为数据库本身就是支持多个事务同时操作情况。...当做了主从复制单个 **Master** 节点或单张表存储数据过大(亿级别数据),单表查询性能还是会下降,这时就需要进一步对单台数据库节点数据分型拆分,这就是分库分表。...SHOW PROFILE **SHOW PROFILE** 可以查看 **SQL** 语句执行时使用资源(**CPU、I/O** 等情况); -- 查看是否开启, MySQL 8.0.19 默认是开启... MySQL 中提供了一个执行计划工具,通过该工具可以模拟优化执行 **SQL** 查询语句过程得到 **MySQL**  是怎么对一条 **SQL** 语句过程并且可以对其进行分析。...因为 **MySQL** 需要把查询结果(中间结果和最终结果都保存到内存),所以 **MySQL** 会优先选择中间结果数据量比较小顺序进行查询,所以最终联表查询顺序是 **a → b → c*

62620

2019Java面试宝典 -- 数据库常见面试题

SQL 语言不同于其他编程语言最明显特征是处理代码顺序。大多数据库语言中,代码按编码顺序被处理。但在 SQL 语句中,第一个被处理子句式 FROM,而不是第一出现 SELECT。...通过 Web 表单输入(恶意)SQL 语句得到一个存在安全漏洞网站上数据库,而不是按照设计者意图去执行 SQL 语句。...表示,即使传递参数“admin or ‘a’= ‘a’”,也会把这整体当做一个字符串去查询。 2....数据库事务 transanction 正确执行四个基本要素。...(3)隔离性:隔离状态执行事务,使它们好像是系统在给定时间内执行唯一操作。如果有两个事务,运行在相同时间内,执行相同功能,事务隔离性将确保每一事务系统认为只有该事务使用系统。

2.2K20
领券