django配置连接数据库及原生sql语句的使用方法


Posted in Python onMarch 03, 2019

前言

本文主要给大家介绍了关于django配置连接数据库及原生sql语句的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧

Django配置连接数据库:

在操作数据库之前,首先先要连接数据库。这里我们以配置MySQL为例来讲解。Django连接数据库,不需要单独的创建一个连接对象。只需要在settings.py文件中做好数据库相关的配置就可以了。

示例代码如下:

DATABASES = {
 'default': {
  # 数据库引擎(是mysql还是oracle等)
  'ENGINE': 'django.db.backends.mysql',
  # 数据库的名字
  'NAME': 'dfz',
  # 连接mysql数据库的用户名
  'USER': 'root',
  # 连接mysql数据库的密码
  'PASSWORD': 'root',
  # mysql数据库的主机地址
  'HOST': '127.0.0.1',
  # mysql数据库的端口号
  'PORT': '3306',
 }
}

在Django中操作数据库:

在Django中操作数据库有两种方式。第一种方式就是使用原生sql语句操作,第二种就是使用ORM模型来操作。这节课首先来讲下第一种。

在Django中使用原生sql语句操作其实就是使用python db api的接口来操作。如果你的mysql驱动使用的是pymysql,那么你就是使用pymysql来操作的,只不过Django将数据库连接的这一部分封装好了,我们只要在settings.py中配置好了数据库连接信息后直接使用Django封装好的接口就可以操作了。示例代码如下:

# 使用django封装好的connection对象,会自动读取settings.py中数据库的配置信息
from django.db import connection

# 获取游标对象
cursor = connection.cursor()
# 拿到游标对象后执行sql语句
cursor.execute("select * from book")
# 获取所有的数据
rows = cursor.fetchall()
# 遍历查询到的数据
for row in rows:
 print(row)

以上的execute以及fetchall方法都是Python DB API规范中定义好的。任何使用Python来操作MySQL的驱动程序都应该遵循这个规范。所以不管是使用pymysql或者是mysqlclient或者是mysqldb,他们的接口都是一样的。更多规范请参考:https://www.python.org/dev/peps/pep-0249/。

Python DB API下规范下cursor对象常用接口:

1、description:如果cursor执行了查询的sql代码。那么读取cursor.description属性的时候,将返回一个列表,这个列表中装的是元组,元组中装的分别是(name,type_code,display_size,internal_size,precision,scale,null_ok),其中name代表的是查找出来的数据的字段名称,其他参数暂时用处不大。

2、rowcount:代表的是在执行了sql语句后受影响的行数。

3、close:关闭游标。关闭游标以后就再也不能使用了,否则会抛出异常。

4、execute(sql[,parameters]):执行某个sql语句。如果在执行sql语句的时候还需要传递参数,那么可以传给parameters参数。示例代码如下:

cursor.execute("select * from article where id=%s",(1,))

5、fetchone:在执行了查询操作以后,获取第一条数据。

6、fetchmany(size):在执行查询操作以后,获取多条数据。具体是多少条要看传的size参数。如果不传size参数,那么默认是获取第一条数据。

7、fetchall:获取所有满足sql语句的数据。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
python实现从web抓取文档的方法
Sep 26 Python
Python RuntimeError: thread.__init__() not called解决方法
Apr 28 Python
在Mac OS上搭建Python的开发环境
Dec 24 Python
django限制匿名用户访问及重定向的方法实例
Feb 07 Python
Python 图像对比度增强的几种方法(小结)
Sep 25 Python
python对数组进行排序,并输出排序后对应的索引值方式
Feb 28 Python
Python爬虫实现模拟点击动态页面
Mar 05 Python
Python json格式化打印实现过程解析
Jul 21 Python
浅谈如何使用python抓取网页中的动态数据实现
Aug 17 Python
解决python打开https出现certificate verify failed的问题
Sep 03 Python
python中如何打包用户自定义模块
Sep 23 Python
Python numpy大矩阵运算内存不足如何解决
Nov 19 Python
更新修改后的Python模块方法
Mar 03 #Python
详解js文件通过python访问数据库方法
Mar 03 #Python
Python中的random.uniform()函数教程与实例解析
Mar 02 #Python
Python中按键来获取指定的值
Mar 02 #Python
Python二叉搜索树与双向链表转换算法示例
Mar 02 #Python
Python实现的序列化和反序列化二叉树算法示例
Mar 02 #Python
Python求一批字符串的最长公共前缀算法示例
Mar 02 #Python
You might like
ThinkPHP3.2.2的插件控制器功能简述
2014/07/09 PHP
php基础教程
2015/08/26 PHP
使用jQuery.Validate进行客户端验证(初级篇) 不使用微软验证控件的理由
2010/06/28 Javascript
Javascript实现DIV滚动自动滚动到底部的代码
2012/03/01 Javascript
Jquery多选下拉列表插件jquery multiselect功能介绍及使用
2013/05/24 Javascript
Flex通过JS获取客户端IP和计算机名的实例代码
2013/11/21 Javascript
浅谈JSON和JSONP区别及jQuery的ajax jsonp的使用
2014/11/23 Javascript
node.js中的console.time方法使用说明
2014/12/09 Javascript
jQuery简单入门示例之用户校验demo示例
2016/07/09 Javascript
angular 动态组件类型详解(四种组件类型)
2017/02/22 Javascript
jQuery插件FusionCharts绘制的2D双面积图效果示例【附demo源码】
2017/04/11 jQuery
常见的浏览器Hack技巧整理
2017/06/29 Javascript
小程序组件之自定义顶部导航实例
2019/06/12 Javascript
Vue插件之滑动验证码用法详解
2020/04/05 Javascript
深入了解JS之作用域和闭包
2020/06/16 Javascript
[03:03]DOTA2校园争霸赛 济南城市决赛欢乐发奖活动
2013/10/21 DOTA
使用Python对IP进行转换的一些操作技巧小结
2015/11/09 Python
Python设计模式之抽象工厂模式
2016/08/25 Python
Python循环语句中else的用法总结
2016/09/11 Python
Python图形绘制操作之正弦曲线实现方法分析
2017/12/25 Python
Python+tkinter使用80行代码实现一个计算器实例
2018/01/16 Python
Python实现替换文件中指定内容的方法
2018/03/19 Python
python实现自动登录后台管理系统
2018/10/18 Python
Pycharm+Scrapy安装并且初始化项目的方法
2019/01/15 Python
centos7之Python3.74安装教程
2019/08/15 Python
Python values()与itervalues()的用法详解
2019/11/27 Python
Python3.7在anaconda里面使用IDLE编译器的步骤详解
2020/04/29 Python
澳大利亚最好的在线时尚精品店:Princess Polly
2018/01/03 全球购物
英国豪华针织品牌John Smedley的在线销售商:The Outlet by John Smedley
2018/04/08 全球购物
光电信息专业应届生求职信
2013/10/07 职场文书
超市端午节活动方案
2014/01/23 职场文书
买卖合同协议书范本
2014/10/18 职场文书
一年级班主任工作总结2014
2014/11/08 职场文书
小学音乐课教学反思
2016/02/18 职场文书
nginx搭建NFS网络文件系统
2022/04/14 Servers
SQL Server删除表中的重复数据
2022/05/25 SQL Server