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实现从订阅源下载图片的方法
Mar 11 Python
Python 递归函数详解及实例
Dec 27 Python
Python中几种导入模块的方式总结
Apr 27 Python
Python中turtle作图示例
Nov 15 Python
Python获取当前函数名称方法实例分享
Jan 18 Python
TensorFlow实现创建分类器
Feb 06 Python
Python2中文处理纪要的实现方法
Mar 10 Python
python中的单引号双引号区别知识点总结
Jun 23 Python
Python实现微信中找回好友、群聊用户撤回的消息功能示例
Aug 23 Python
python 追踪except信息方式
Apr 25 Python
Python数据清洗工具之Numpy的基本操作
Apr 22 Python
Python3接口性能测试实例代码
Jun 20 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
PHP操作xml代码
2010/06/17 PHP
基于PHP开发中的安全防范知识详解
2013/06/06 PHP
DOM XPATH获取img src值的query
2013/09/23 PHP
为百度UE编辑器上传图片添加水印功能
2015/04/16 PHP
源码分析 Laravel 重复执行同一个队列任务的原因
2017/12/25 PHP
RR vs IO BO3 第二场2.13
2021/03/10 DOTA
Javascript基础知识(三)BOM,DOM总结
2014/09/29 Javascript
JSON字符串转JSON对象
2015/07/31 Javascript
实例分析浏览器中“JavaScript解析器”的工作原理
2016/12/12 Javascript
js实现鼠标拖拽多选功能示例
2017/08/01 Javascript
js时间戳转yyyy-MM-dd HH-mm-ss工具类详解
2019/04/30 Javascript
Layui弹出层 加载 做编辑页面的方法
2019/09/16 Javascript
vue 项目软键盘回车触发搜索事件
2020/09/09 Javascript
解决vue props传Array/Object类型值,子组件报错的情况
2020/11/07 Javascript
[01:19:35]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第二局
2016/03/05 DOTA
[01:38]完美世界高校联赛决赛花絮
2018/12/02 DOTA
在Python的Django框架中simple-todo工具的简单使用
2015/05/30 Python
python bottle框架支持jquery ajax的RESTful风格的PUT和DELETE方法
2017/05/24 Python
Python排序搜索基本算法之插入排序实例分析
2017/12/11 Python
Python解决抛小球问题 求小球下落经历的距离之和示例
2018/02/01 Python
Python字符串的全排列算法实例详解
2019/01/07 Python
python实现两个经纬度点之间的距离和方位角的方法
2019/07/05 Python
详解python实现数据归一化处理的方式:(0,1)标准化
2019/07/17 Python
PyCharm刷新项目(文件)目录的实现
2020/02/14 Python
html5 拖拽上传图片实例演示
2013/04/01 HTML / CSS
html5拍照功能实现代码(htm5上传文件)
2013/12/11 HTML / CSS
ManoMano英国:欧洲第一家专注于DIY和园艺市场的电商平台
2020/03/12 全球购物
盛大二次面试题
2016/11/18 面试题
最新大学生自我评价
2013/09/24 职场文书
财务部经理岗位职责
2014/02/03 职场文书
《小猫刮胡子》教学反思
2014/02/21 职场文书
驾驶员安全责任书范本
2014/07/24 职场文书
2014光棍节大学生联谊活动方案
2014/10/10 职场文书
2014年英语教师工作总结
2014/12/03 职场文书
基于CSS3画一个iPhone
2021/04/21 HTML / CSS
手把手带你彻底卸载MySQL数据库
2022/06/14 MySQL