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实现根据图标提取分类应用程序实例
Sep 28 Python
Python中对列表排序实例
Jan 04 Python
python使用PyGame绘制图像并保存为图片文件的方法
Apr 24 Python
python下10个简单实例代码
Nov 15 Python
PyQt5每天必学之进度条效果
Apr 19 Python
python操作excel的包(openpyxl、xlsxwriter)
Jun 11 Python
Python实现App自动签到领取积分功能
Sep 29 Python
python获取Linux发行版名称
Aug 30 Python
检测tensorflow是否使用gpu进行计算的方式
Feb 03 Python
python向企业微信发送文字和图片消息的示例
Sep 28 Python
使用Python webdriver图书馆抢座自动预约的正确方法
Mar 04 Python
python实现高效的遗传算法
Apr 07 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入门源程序
2006/10/09 PHP
php数组的一些常见操作汇总
2011/07/17 PHP
PHP数组实例总结与说明
2011/08/23 PHP
解析PHP将对象转换成数组的方法(兼容多维数组类型)
2013/06/21 PHP
Smarty模板学习笔记之Smarty简介
2014/05/20 PHP
CI框架开发新浪微博登录接口源码完整版
2014/05/28 PHP
Linux系统下使用XHProf和XHGui分析PHP运行性能
2015/12/08 PHP
SAE实时日志接口SDK用法示例
2016/10/09 PHP
PHP双向链表定义与用法示例
2018/01/31 PHP
document对象execCommand的command参数介绍
2006/08/01 Javascript
通过Unicode转义序列来加密,按你说的可以算是混淆吧
2007/05/06 Javascript
浅谈tudou土豆网首页图片延迟加载的效果
2010/06/23 Javascript
JS获取地址栏参数的几种方法小结
2014/02/28 Javascript
原生js实现fadein 和 fadeout淡入淡出效果
2014/06/05 Javascript
JS获取下拉框显示值和判断单选按钮的方法
2015/07/09 Javascript
javascript实现列表滚动的方法
2015/07/30 Javascript
倾力总结40条常见的移动端Web页面问题解决方案
2016/05/24 Javascript
jQuery 全选 全部选 反选 实现代码
2016/08/17 Javascript
JS中async/await实现异步调用的方法
2019/08/28 Javascript
vue中路由跳转不计入history的操作
2020/09/21 Javascript
Python中pygame安装方法图文详解
2015/11/11 Python
Python字符串拼接的几种方法整理
2017/08/02 Python
python奇偶行分开存储实现代码
2018/03/19 Python
Python打包方法Pyinstaller的使用
2018/10/09 Python
python反转列表的三种方式解析
2019/11/08 Python
Python算法中的时间复杂度问题
2019/11/19 Python
Python continue语句实例用法
2020/02/06 Python
python中threading开启关闭线程操作
2020/05/02 Python
中职应届生会计求职信
2013/10/23 职场文书
雷锋精神演讲稿
2014/05/13 职场文书
2014年社区矫正工作总结
2014/11/18 职场文书
售后服务承诺函格式
2015/01/21 职场文书
2015年安全教育月活动总结
2015/03/26 职场文书
2016国庆节67周年寄语
2015/12/07 职场文书
mysql 8.0.24 安装配置方法图文教程
2021/05/12 MySQL
Java实现房屋出租系统详解
2021/10/05 Java/Android