orm和mysql_orm与mysql

一. orm执行原生sql语句

在模型查询API不够用的情况下,我们还可以使用原始的SQL语句进行查询。

Django 提供两种方法使用原始SQL进行查询:一种是使用raw()方法,进行原始SQL查询并返回模型实例;另一种是完全避开模型层,直接执行自定义的SQL语句。

1. 执行原生sql查询

raw()管理器方法用于原始的SQL查询,并返回模型的实例:

注意:raw()语法查询必须包含主键。

这个方法执行原始的SQL查询,并返回一个django.db.models.query.RawQuerySet 实例。 这个RawQuerySet 实例可以像一般的QuerySet那样,通过迭代来提供对象实例

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

raw()管理器方法用于原始的SQL查询,并返回模型的实例

ret= models.Book.objects.raw('select * from app01_book')print(ret)#

for i inret:print(i.id, i.title, i.commentNum)

原生SQL还可以使用参数,注意不要自己使用字符串格式化拼接SQL语句,防止SQL注入

d= {'commentNum': 'cn'}

ret= models.Book.objects.raw('select * from app01_book where id > %s', translations=d, params=[2,])for i inret:print(i.id, i.title, i.cn)

View Code

2. 直接执行自定义sql

有时候raw()方法并不十分好用,很多情况下我们不需要将查询结果映射成模型,或者我们需要执行DELETE、 INSERT以及UPDATE操作。在这些情况下,我们可以直接访问数据库,完全避开模型层。

我们可以直接从django提供的接口中获取数据库连接,然后像使用pymysql模块一样操作数据库

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

from django.db importconnection, connections

cursor=connection.cursor()

sql= 'select * from app01_book'cursor.execute(sql)

ret=cursor.fetchone()print(ret)

View Code

二.  Python脚本中调用Django环境(django外部脚本使用models)

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

if __name__ == '__main__':importos

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'manytable.settings')importdjango

django.setup()from app01 importmodels

books=models.Book.objects.all()print(books)

View Code

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/572532.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

课程作业2

作业二 题目 编写一个程序,要求根据给定的圆的半径求圆的面积,并将求得的结果打印出来。 要求: 输入输出采用cin和cout。 建立一个工程,将程序写成两个.cpp和一个.h的形式。 要求程序必须要对变量的定义和各个函数模块进行注释。 …

webform中提交按钮同时执行更新和插入操作_软件测试中的功能测试点(三)

26.输入法半角全角检查再输入信息中,输入一个或连串空格,查看系统如何处理,如对于要求输入符点型数据的项中,输入全角的小数点(“。”或“.”,如4.5);输入全角的空格等。 27.密码检查…

PAT甲题题解-1091. Acute Stroke (30)-BFS

题意:给定三维数组,0表示正常,1表示有肿瘤块,肿瘤块的区域>t才算是肿瘤,求所有肿瘤块的体积和 这道题一开始就想到了dfs或者bfs,但当时看数据量挺大的,以为会导致栈溢出,所以并没…

python如何获取请求的url_听说你在学习:如何通过代码请求URL地址

最近比较忙碌,都没有时间更新公众号文章,表示比较惭愧。最近翻看了一下自己的博客,发现这篇文章的内容还是挺实用,所以,想分享给大家,欢迎阅读。在后续,我会从一个范围的角度进行编写一系列文章…

在sql中将表建在别的构件中用什么语句_SQL实战

学习主题:SQL学习目标:1 掌握子查询1. 什么是子查询(1) 什么是子查询?答:当一个查询是另一个查询的条件时,称之为子查询。简而言之:嵌套查询(2) 子查询执行的顺序是什么?答:先进行内…

数据结构入门之链表(C语言实现)

这篇文章主要是根据《数据结构与算法分析--C语言描述》一书的链表章节内容所写,该书作者给出了链表ADT的一些方法,但是并没有给出所有方法的实现。在学习的过程中将练习的代码记录在文章中,并添加了一些在测试中需要的函数,因此可…

centos radius mysql_centos6.5下安装freeradius2.2.9+mysql

平台centos6.5 x86_641,安装源并更新rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpmyum update -y2,安装相关库yum -y install wget expat-devel gcc make gmp-devel gmp pkgconfig perl libpcap gcc-c logrotate…

二手书城开发步骤

请点击进入 1、二手书城设计 2、搭建页面框架 3、构建bass服务及model 4、淘书页详细 5、购物车页详细 6、订单页详细 7、我的页详细 8、发布页详细转载于:https://www.cnblogs.com/xiaoxiaohabi/p/6789349.html

mongoose mysql_mongoose入门

mongoose入门MongoDB是一个开源的NoSQL数据库,相比MySQL那样的关系型数据库,它更显得轻巧、灵活,非常适合在数据规模很大、事务性不强的场合下使用。同时它也是一个对象数据库,没有表、行等概念,也没有固定的模式和结构…

php 验证码需开启gd2

转载于:https://www.cnblogs.com/zhangj391/p/6794555.html

pcm 降采样_Android_android downsample降低音频采样频率代码,使用Android AudioRecord 录制PCM文 - phpStudy...

android downsample降低音频采样频率代码使用Android AudioRecord 录制PCM文件,android SDK保证在所有设备上都支持的采样频率只有44100HZ,所以如果想得到其他采样频率的PCM数据,有几种方式:1.在设备上尝试可用的采样频率&#xf…

C++中没有定义类的引用。

在有时候由于类太大。须要在类在后面定义; 比如: class Y{void f(X); }; class X{ //一些成员数据和函数};//error由于c要求不论什么一个变量在引用之前必须声明。。在上述定义中我们能够调换两者的顺序来实现。 可是假设形成了循环? class X…

python中不能使用下标运算的有哪些_Python中最常见的10个问题(列表)

列表是Python中使用最多的一种数据结果,如何高效操作列表是提高代码运行效率的关键,这篇文章列出了10个常用的列表操作,希望对你有帮助。注意:很多人学Python过程中会遇到各种烦恼问题,没有人帮答疑。为此小编建了个Py…

Spring:与Redis的集成

一个月没写过博客了,一直想记录一下之前学习的Redis的有关知识,但是因为四月太过于慵懒和忙碌,所以一直没有什么机会,今天就来讲讲,如何使用Spring当中的Spring-data-redis去与Redis这个Nosql数据库集成吧。 首先先简单…

python中如何将字典直接变成二维数组_python基础知识(列表、字典、二维数组)...

记得改参数!!!(1)简述列表(list)结构的特点。List(列表)List的元素以线性方式存储,可以存放重复对象,List主要有以下两个实现类:ArrayList : 长度可变的数组,可以对元素进行随机的访问&#xff…

内置对象和自定义对象的原型链

内置对象的原型链 新增属性 Object.prototype.mytest function() {alert("123");}var o new Object();o.mytest();重写属性 Object.prototype.toString function(){alert("破话之王");}o.toString();转载于:https://www.cnblogs.com/Abner5/p/6798630.h…

mysql将不同行数结果合并成多列_将多行合并到mysql中的一行和多列

我正在MYSQL工作,需要将用户数据提取到一个视图中.我将使用电子邮件客户端中的数据,因此我无法在应用程序层中执行此操作.问题是用户的每个数据字段都包含在单独的行中(这是Wordpress如何设置数据结构).例如,wp_usermeta为每个用户提供了多行数据,如下所示:user_id …

一些JavaScript基本函数

1.document.write(”");为 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document->html->(head,body) 4.一个浏览器窗口中的DOM顺序是:window->(navigator,screen,history,location,document) 5.得到表单中元素的名称和值:document.getElementById(”表单…

mysql动态代理_超全MyBatis动态代理详解(绝对干货)

前言假如有人问你这么几个问题,看能不能答上来Mybatis Mapper 接口没有实现类,怎么实现的动态代理JDK 动态代理为什么不能对类进行代理(充话费送的问题)抽象类可不可以进行 JDK 动态代理(附加问题)答不上来的铁汁,证明 Proxy、Mybatis 源码还…

Linux学习之SAMBA共享(无密码)

一、服务器配置 安装:yum install -y samba 更改要共享的path权限:chmod 777 /mnt/samba/ 先备份smb.conf配置文件:cp /etc/samba/smb.conf /etc/samba/smb.conf.bak 更改配置:vim /etc/samba/smb.conf security sha…