raw

  1. # row方法:(掺杂着原生sql和orm来执行的操作)
  2. res = CookBook.objects.raw('select id as nid from epos_cookbook where id>%s', params=[1, ])
  3. print(res.columns) # ['nid']
  4. print(type(res)) # <class 'django.db.models.query.RawQuerySet'>
  5.  
  6. # 在select里面查询到的数据orm里面的要一一对应
  7. res = CookBook.objects.raw("select * from epos_cookbook")
  8. print(res)
  9. for i in res:
  10. print(i.create_date)
  11. print(i)
  12.  
  13. res = CookBook.objects.raw('select * from epos_cookbook where id>%s', params=[1, ])
  14. # 后面可以加参数进来
  15. print(res)
  16. for i in res:
  17. # print(i.create_date)
  18. print(i)

extra

  1. ## select提供简单数据
  2. # SELECT age, (age > 18) as is_adult FROM myapp_person;
  3. Person.objects.all().extra(select={'is_adult': "age > 18"}) # 加在select后面
  4.  
  5. ## where提供查询条件
  6. # SELECT * FROM myapp_person WHERE first||last ILIKE 'jeffrey%';
  7. Person.objects.all().extra(where=["first||last ILIKE 'jeffrey%'"]) # 加一个where条件
  8.  
  9. ## table连接其它表
  10. # SELECT * FROM myapp_book, myapp_person WHERE last = author_last
  11. Book.objects.all().extra(table=['myapp_person'], where=['last = author_last']) # 加from后面
  12.  
  13. ## params添参数
  14. # !! 错误的方式 !!
  15. first_name = 'Joe' # 如果first_name中有SQL特定字符就会出现漏洞
  16. Person.objects.all().extra(where=["first = '%s'" % first_name])
  17. # 正确方式
  18. Person.objects.all().extra(where=["first = '%s'"], params=[first_name])

connection(类似pymysql)

  1. from django.db import connection
  2.  
  3. cursor=connection.cursor()
  4. # 如果需要配置数据库
  5. # cursor=connection['default'].cursor()
  6.  
  7. cursor.execute('select * from app01_book')
  8.  
  9. ret=cursor.fetchall()
  10.  
  11. print(ret)
  12. #((2, '小时光', Decimal('10.00'), 2), (3, '未来可期', Decimal('33.00'), 1), (4, '打破思维里的墙', Decimal('11.00'), 2), (5, '时光不散', Decimal('11.00'), 3))

注意:如果在sql语句中有用到除法(%),需要使用%%来转义,因为在str中%多用于格式化输出。

在django中使用原生sql语句的更多相关文章

  1. Django中执行原生SQL语句【新编辑】

    参考我的个人博客 这部分迁移到了个人博客中:Django中执行原生SQL语句 这里需要补充一下,还有一个extra方法: ret = models.Student.objects.all().extr ...

  2. Django&,Flask&pyrthon原生sql语句 基本操作

    Django框架 ,Flask框架 ORM 以及pyrthon原生sql语句操作数据库 WHAT IS ORM? ORM( Object Relational Mapping) 对象关系映射 , 即通 ...

  3. django中使用原生sql

    在Django中使用原生Sql主要有以下几种方式: 一:extra:结果集修改器,一种提供额外查询参数的机制 二:raw:执行原始sql并返回模型实例 三:直接执行自定义Sql ( 这种方式完全不依赖 ...

  4. thinkPHP框架中执行原生SQL语句的方法

    这篇文章主要介绍了thinkPHP框架中执行原生SQL语句的方法,结合实例形式分析了thinkPHP中执行原生SQL语句的相关操作技巧,并简单分析了query与execute方法的使用区别,需要的朋友 ...

  5. django系列5.4--ORM中执行原生SQL语句, Python脚本中调用django环境

    ORM执行原生sql语句 在模型查询API不够用的情况下,我们还可以使用原始的SQL语句进行查询. Django 提供两种方法使用原始SQL进行查询:一种是使用raw()方法,进行原始SQL查询并返回 ...

  6. 在Hibernate中使用原生SQL语句

    使用原生SQL查询必须注意:程序必须选出所有的数据列才可被转换成持久化实体.假设实体在映射时有一个<many-to-one../>的关联指向另外一个实体,则SQL查询中必须返回该<m ...

  7. Django中直接执行SQL语句

    欢迎加入python学习交流群 667279387 今天在django views.py看到同事写的代码里面有段关于数据库查询的语句.因为涉及多个表的查询,所以django 的models的查询无法满 ...

  8. Django设置查看原生SQL语句

    LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console':{ 'level':'DEBU ...

  9. 043:Django使用原生SQL语句操作数据库

    Django使用原生SQL语句操作数据库 Django配置连接数据库: 在操作数据库之前,首先先要连接数据库.这里我们以配置 MySQL 为例来讲解. Django 连接数据库,不需要单独的创建一个连 ...

随机推荐

  1. Python UnboundLocalError: local variable 'xxx' referenced before assignment 解决方法

    一.报错含义: val=9 def test(): print(val) val = 6 print(val) test() 翻译:本地变量xxx引用前没有定义. 二.报错原因 这是Python变量作 ...

  2. C++ 数据结构 3:树和二叉树

    1 树 1.1 定义 由一个或多个(n ≥ 0)结点组成的有限集合 T,有且仅有一个结点称为根(root),当 n > 1 时,其余的结点分为 m (m ≥ 0)个互不相交的有限集合T1,T2, ...

  3. Docker 实战(4)- 结合 Jenkins + Gitlab 完成自动化测试的持续集成实战

    如果你还想从头学起 Docker,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1870863.html Jenkins 关联 Gitla ...

  4. nginx&http 第三章 ngx 1-http ngx_http_wait_request_handler

    对于活跃的 HTTP 连接,在执行连接建立回调函数 ngx_http_init_connection 的过程中会执行 ngx_http_wait_request_handler 回调函数, 负责 HT ...

  5. centos7单独编译nbd内核模块

    前言 centos7默认内核没有带nbd的模块,可以通过下载跟当前版本匹配的内核源码,编译源码指定的模块,然后加载到系统 步骤 判断版本 [root@lab201 linux-3.10.0-957.e ...

  6. Django实战总结 - 快速开发一个数据库查询工具

    一.简介 Django 是一个开放源代码的 Web 应用框架,由 Python 写成. Django 只要很少的代码就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的 Web 服务 ...

  7. Docker 初始

    1. Docker 是什么? 官网的介绍是"Docker is the world's leading software container platform." 官方给Docke ...

  8. 我要进大厂之大数据MapReduce知识点(1)

    01 我们一起学大数据 老刘今天分享的是大数据Hadoop框架中的分布式计算MapReduce模块,MapReduce知识点有很多,大家需要耐心看,用心记,这次先分享出MapReduce的第一部分.老 ...

  9. [原题复现]BJDCTF2020 WEB部分全部解

    简介  原题复现:https://gitee.com/xiaohua1998/BJDCTF2020_January  线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学 ...

  10. CVE-2017-11882利用

    CVE-2017-11882是微软公布的远程执行漏洞,通杀所有office版本及Windows操作系统 工具使用 本文使用的EXP来源于unamer/CVE-2017-11882,然后结合MSF进行渗 ...