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使用xmlrpc实例讲解
Dec 17 Python
在Mac OS上搭建Python的开发环境
Dec 24 Python
python使用turtle库与random库绘制雪花
Jun 22 Python
Python类装饰器实现方法详解
Dec 21 Python
python 使用pygame工具包实现贪吃蛇游戏(多彩版)
Oct 30 Python
在flask中使用python-dotenv+flask-cli自定义命令(推荐)
Jan 05 Python
python argparse传入布尔参数false不生效的解决
Apr 20 Python
Scrapy爬虫文件批量运行的实现
Sep 30 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
Oct 22 Python
Python 获取异常(Exception)信息的几种方法
Dec 29 Python
python制作图形界面的2048游戏, 基于tkinter
Apr 06 Python
yolov5返回坐标的方法实例
Mar 17 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
十大感人催泪爱情动漫 第一名至今不忍在看第二遍
2020/03/04 日漫
用Zend Encode编写开发PHP程序
2006/10/09 PHP
PHP详解ASCII码对照表与字符转换
2011/12/05 PHP
php中Y2K38的漏洞解决方法实例分析
2014/09/22 PHP
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
2016/04/17 PHP
PHP递归的三种常用方式
2019/02/28 PHP
javascript里的条件判断
2007/02/27 Javascript
JavaScript的单例模式 (singleton in Javascript)
2010/06/11 Javascript
使用jQuery实现dropdownlist的联动效果(sharepoint 2007)
2011/03/30 Javascript
JS获取浏览器版本及名称实现函数
2013/04/02 Javascript
div模拟选择框示例代码
2013/11/03 Javascript
JQuery记住用户名和密码的具体实现
2014/04/04 Javascript
jquery禁用右键示例
2014/04/28 Javascript
JavaScript数值千分位格式化的两种简单实现方法
2016/08/01 Javascript
JS前端笔试题分析
2016/12/19 Javascript
利用Js+Css实现折纸动态导航效果实例源码
2017/01/25 Javascript
angular.extend方法的具体使用
2017/09/14 Javascript
实例讲解v-if和v-show的区别
2019/01/31 Javascript
layui 实现表格某一列显示图标
2019/09/19 Javascript
js实现树形数据转成扁平数据的方法示例
2020/02/27 Javascript
修改Vue打包后的默认文件名操作
2020/08/12 Javascript
[01:09:40]Newbee vs Pain 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python md5与sha1加密算法用法分析
2017/07/14 Python
python 多线程串行和并行的实例
2019/02/22 Python
Django 接收Post请求数据,并保存到数据库的实现方法
2019/07/12 Python
详解CSS3 rem(设置字体大小) 教程
2017/11/21 HTML / CSS
移动端HTML5实现文件上传功能【附代码】
2016/03/25 HTML / CSS
一年级数学教学反思
2014/02/01 职场文书
大学生通用个人的自我评价
2014/02/10 职场文书
婚礼主持结束词
2014/03/13 职场文书
天坛导游词
2015/02/02 职场文书
上班迟到检讨书范文
2015/05/06 职场文书
公安干警正风肃纪心得体会
2016/01/15 职场文书
喜迎建国70周年:有关爱国的名言名句
2019/09/24 职场文书
2019年英语版感谢信(8篇)
2019/09/29 职场文书
Redis实现主从复制方式(Master&Slave)
2022/06/21 Redis