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开发实例分享bt种子爬虫程序和种子解析
May 21 Python
Python去除列表中重复元素的方法
Mar 20 Python
Python中文件操作简明介绍
Apr 13 Python
实例探究Python以并发方式编写高性能端口扫描器的方法
Jun 14 Python
浅谈python中的数字类型与处理工具
Aug 02 Python
Python爬虫框架Scrapy实例代码
Mar 04 Python
Python 找到列表中满足某些条件的元素方法
Jun 26 Python
selenium设置proxy、headers的方法(phantomjs、Chrome、Firefox)
Nov 29 Python
django模板加载静态文件的方法步骤
Mar 01 Python
pycharm 设置项目的根目录教程
Feb 12 Python
jupyter notebook 写代码自动补全的实现
Nov 02 Python
Python中for后接else的语法使用
May 18 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学习笔记 PHP面向对象的程序设计
2011/06/13 PHP
PHP超全局数组(Superglobals)介绍
2015/07/01 PHP
php创建无限级树型菜单
2015/11/05 PHP
解决Laravel自定义类引入和命名空间的问题
2019/10/15 PHP
javascript 判断数组是否已包含了某个元素的函数
2010/05/30 Javascript
使用Math.floor与Math.random取随机整数的方法详解
2013/05/07 Javascript
JQuery打造省市下拉框联动效果
2014/05/18 Javascript
javascript html5实现表单验证
2016/03/01 Javascript
判断是否存在子节点的实现代码
2016/05/18 Javascript
Dropzone.js实现文件拖拽上传功能(附源码下载)
2016/11/22 Javascript
一个例子轻松学会Vue.js
2017/01/02 Javascript
JS实现颜色动态淡化效果
2017/03/06 Javascript
Jquery获取radio选中的值
2017/05/05 jQuery
jQuery图片加载失败替换默认图片方法汇总
2017/11/29 jQuery
js推箱子小游戏步骤代码解析
2018/01/10 Javascript
JS 图片压缩原理与实现方法详解
2020/04/29 Javascript
Python备份Mysql脚本
2008/08/11 Python
Python天气预报采集器实现代码(网页爬虫)
2012/10/07 Python
python插入数据到列表的方法
2015/04/30 Python
在Windows系统上搭建Nginx+Python+MySQL环境的教程
2015/12/25 Python
Python 内置函数complex详解
2016/10/23 Python
用pickle存储Python的原生对象方法
2017/04/28 Python
Python2.7+pytesser实现简单验证码的识别方法
2017/12/29 Python
Python使用爬虫爬取静态网页图片的方法详解
2018/06/05 Python
Python按照list dict key进行排序过程解析
2020/04/04 Python
python中urllib.request和requests的使用及区别详解
2020/05/05 Python
python的reverse函数翻转结果为None的问题
2020/05/11 Python
Python爬虫+Tkinter制作一个翻译软件的示例
2021/02/20 Python
NBA欧洲商店(西班牙):NBA Europe Store ES
2019/04/16 全球购物
亚洲颇具影响力的男性在线购物零售商:His
2019/11/24 全球购物
会计电算一体化个人简历的自我评价
2013/10/15 职场文书
电气自动化个人求职信范文
2014/02/03 职场文书
总经理助理岗位职责
2015/01/31 职场文书
MySQL数据迁移相关总结
2021/04/29 MySQL
golang实现浏览器导出excel文件功能
2022/03/25 Golang
Netty分布式客户端处理接入事件handle源码解析
2022/03/25 Java/Android