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 13 Python
python中__call__方法示例分析
Oct 11 Python
python 动态加载的实现方法
Dec 22 Python
Python输出各行命令详解
Feb 01 Python
Python元组及文件核心对象类型详解
Feb 11 Python
Python读写zip压缩文件的方法
Aug 29 Python
Python3实现定时任务的四种方式
Jun 03 Python
详解PyTorch中Tensor的高阶操作
Aug 18 Python
python中的函数递归和迭代原理解析
Nov 14 Python
关于tf.reverse_sequence()简述
Jan 20 Python
对python中return与yield的区别详解
Mar 12 Python
python中pymysql包操作数据库方法
Apr 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
php URL编码解码函数代码
2009/03/10 PHP
基于ubuntu下nginx+php+mysql安装配置的具体操作步骤
2013/04/28 PHP
3款值得推荐的微信开发开源框架
2014/10/28 PHP
Yii2实现上下联动下拉框功能的方法
2016/08/10 PHP
php封装db类连接sqlite3数据库的方法实例
2017/12/19 PHP
利用js获取服务器时间的两个简单方法
2010/01/08 Javascript
JavaScript高级程序设计(第3版)学习笔记9 js函数(下)
2012/10/11 Javascript
根据表格中的某一列进行排序的javascript代码
2013/11/29 Javascript
js实现网页抽奖实例
2015/08/05 Javascript
JS实现的仿淘宝交易倒计时效果
2015/11/27 Javascript
jQuery实现背景弹性滚动的导航效果
2016/06/01 Javascript
js中window.open的参数及注意注意事项
2016/07/06 Javascript
jquery根据td给相同tr下其他td赋值的实现方法
2016/10/05 Javascript
jqGrid翻页时数据选中丢失问题的解决办法
2017/02/13 Javascript
js数字滑动时钟的简单实现(示例讲解)
2017/08/14 Javascript
JavaScript函数的特性与应用实践深入详解
2018/12/30 Javascript
vue双击事件2.0事件监听(点击-双击-鼠标事件)和事件修饰符操作
2020/07/27 Javascript
[01:25:09]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第二场
2014/05/24 DOTA
跟老齐学Python之??碌某?? target=
2014/09/12 Python
pymongo为mongodb数据库添加索引的方法
2015/05/11 Python
Python基础语法(Python基础知识点)
2016/02/28 Python
[原创]python爬虫(入门教程、视频教程)
2018/01/08 Python
Python中elasticsearch插入和更新数据的实现方法
2018/04/01 Python
Python两台电脑实现TCP通信的方法示例
2019/05/06 Python
Pycharm新手教程(只需要看这篇就够了)
2019/06/18 Python
Python+pyplot绘制带文本标注的柱状图方法
2019/07/08 Python
通过python实现弹窗广告拦截过程详解
2019/07/10 Python
如何验证python安装成功
2020/07/06 Python
村优秀党员事迹材料
2014/01/15 职场文书
中级会计职业生涯规划书
2014/03/01 职场文书
2014公司党员自我评价范文
2014/09/11 职场文书
终止解除劳动合同证明书
2015/06/17 职场文书
爱心捐赠活动简讯
2015/07/20 职场文书
2016年万圣节活动总结
2016/04/05 职场文书
redis 查看所有的key方式
2021/05/07 Redis
Python可视化动图组件ipyvizzu绘制惊艳的可视化动图
2022/04/21 Python