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中from module import * 的一个坑
Jul 20 Python
Python中的random()方法的使用介绍
May 15 Python
python学习之第三方包安装方法(两种方法)
Jul 30 Python
python使用wmi模块获取windows下的系统信息 监控系统
Oct 27 Python
浅谈python抛出异常、自定义异常, 传递异常
Jun 20 Python
python logging 日志轮转文件不删除问题的解决方法
Aug 02 Python
Python面向对象之类和对象属性的增删改查操作示例
Dec 14 Python
十行代码使用Python写一个USB病毒
Jun 21 Python
python粘包问题及socket套接字编程详解
Jun 29 Python
python脚本调用iftop 统计业务应用流量的思路详解
Oct 11 Python
Python实现寻找回文数字过程解析
Jun 09 Python
Python绘制数码晶体管日期
Feb 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
咖啡是不是喝了会上瘾?咖啡是必须品吗!
2021/03/04 新手入门
上海地方志办公室-上海电子仪表工业志
2021/03/04 无线电
生成随机字符串和验证码的类的PHP实例
2013/12/24 PHP
PHP实现非阻塞模式的方法分析
2018/07/26 PHP
jquery按回车提交数据的代码示例
2013/11/05 Javascript
JS+CSS 制作的超级简单的下拉菜单附图
2013/11/22 Javascript
jquery提示效果实例分析
2014/11/25 Javascript
jquery插件validation实现验证身份证号等
2015/06/04 Javascript
nodejs爬虫抓取数据乱码问题总结
2015/07/03 NodeJs
深入解读JavaScript中的Hoisting机制
2015/08/12 Javascript
利用vue写todolist单页应用
2016/12/15 Javascript
vue.js指令和组件详细介绍及实例
2017/04/06 Javascript
微信小程序request出现400的问题解决办法
2017/05/23 Javascript
Vuex 使用 v-model 配合 state的方法
2018/11/13 Javascript
小试SVG之新手小白入门教程
2019/01/08 Javascript
js设置默认时间跨度过程详解
2019/07/17 Javascript
Vue.js组件实现选项卡以及切换特效
2019/07/24 Javascript
jQuery实现每日秒杀商品倒计时功能
2019/09/06 jQuery
Vue常用的全选/反选的示例代码
2020/02/19 Javascript
[02:12]2019完美世界全国高校联赛(春季赛)报名开启
2019/03/01 DOTA
django DRF图片路径问题的解决方法
2018/09/10 Python
Python实现注册、登录小程序功能
2018/09/21 Python
python集合是否可变总结
2019/06/20 Python
Python实现的企业粉丝抽奖功能示例
2019/07/26 Python
matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)
2019/08/06 Python
总结html5自定义属性有哪些
2020/04/01 HTML / CSS
挪威太阳镜和眼镜网上商城:SmartBuyGlasses挪威
2016/08/20 全球购物
英国历史最悠久的DJ设备供应商:DJ Finance、DJ Warehouse、The DJ Shop
2019/09/04 全球购物
一道写SQL的面试题和答案
2013/11/19 面试题
经理秘书岗位职责
2013/11/14 职场文书
优秀实习生感言
2014/03/01 职场文书
美术教师个人总结
2015/02/06 职场文书
2016十一国庆节感言
2015/12/09 职场文书
《异世界四重奏》剧场版6月10日上映 PV视觉图原创角色发表
2022/03/20 日漫
《宝可梦》动画制作25周年到来 官方发布特别纪念视频
2022/04/01 日漫
Python之matplotlib绘制饼图
2022/04/13 Python