当前位置:
首页 > temp > python入门教程 >
-
Django笔记:连接数据库并执行SQL语句
Django中安装好数据库和对应的数据库驱动之后,就可以直接执行SQL语句进行数据库和表的创建,以及数据的增删改查等操作,在Python3中,可以使用的数据库和驱动有多种,我这里使用的是MySQL数据库,对应的驱动使用的是mysqlclient
,安装时直接使用pip install mysqlclient
安装即可。
一、MySQL数据库驱动
对于Python中使用的MySQL驱动,以下几种可以参考下:
-
MySQL-python
:也就是MySQLdb
,是对c语言操作MySQL数据库的一个简单封装,遵循了Python DB API v2
,但是,这个驱动只支持Python2,不支持Python3。 -
mysqlclient
:是MySQL-python
的另外一个分支,支持Python3,并修复了一些bug。 -
pymysql
:纯Python实现的一个驱动。当然,因为是纯Python编写的,所以执行效率不如MySQL-python
(包括mysqlclient
),但是也正因为是纯Python编写的,因此可以和Python代码无缝衔接。 -
MySQL Connector/Python
:MySQL官方推出的使用纯Python连接MySQL的驱动,因为是纯Python编写的,因此和pymysql
也有同样的问题,即执行效率不如MySQL-python
(包括mysqlclient
)。
二、连接数据库
安装好MySQL数据库及其驱动后,只需要在项目主app的settings.py
中修改配置项DATABASES
的default
项信息即可,之后运行Django项目时就可以自动连接数据库了。具体配置方法参考示例:
DATABASES = {
'default': {
# 数据库引擎
'ENGINE': 'django.db.backends.mysql',
# 数据库名称
'NAME': 'django_db1',
# 用户名
'USER': 'root',
# 密码
'PASSWORD': '123456',
# 数据库所在的主机IP(本机就是127.0.0.1)
'HOST': '127.0.0.1',
# 数据库使用的端口号(MySQL默认端口号就是3306)
'PORT': '3306'
}
}
三、执行SQL语句
Django中有两种方式来操作数据库,一种是通过ORM模型,另一种就是直接执行SQL语句,这里讲一下直接执行SQL的方式。
直接执行SQL的方式需要用到from django.db import connection
,并通过connection.cursor()
方法获取到数据库的游标对象,然后使用游标对象的方法来执行对应的SQL即可。直接执行SQL的这种方式遵循Python DB API
的规范,而对于遵循这个规范的数据库驱动来说,它们使用的方法都是一样的,不同之处在于方法内部的实现原理,比如execute
、fetchall
等方法,这些方法不只是Django中才有,只要是遵循Python DB API
规范实现的驱动都会有这些方法,只是各自的实现原理不同而已。这个规范具体有哪些方法,可以参考Python官方文档Python DB API,这里列举一些常用的方法:
-
description
:如果cursor
执行了查询的SQL,那么cursor.description
将返回一个列表,列表中的元素为元组(name, type_code, display_size, internal_size, precision, scale, null_ok)
。 -
rowcount
:表示执行了SQL后受影响的行数。 -
close
:关闭游标。 -
execute(sql[, parameters])
:执行SQL。执行SQL的时候如果需要传递参数,则可以使用parameters
参数,例如cursor.execute("select * from article where id=%s", (1, ))
。当然,也可以先将SQL字符串构造好后直接传入。 -
fetchone
:在执行了查询操作后,获取查询结果的第一条数据。 -
fetchmany(size)
:在执行了查询操作后,获取指定条数的数据,如果不指定size
参数,则默认获取第一条数据。 -
fetchall
:获取所有SQL执行结果。
示例:通过SQL的方式操作数据库
from django.shortcuts import render
from django.db import connection
def index(request):
# 创建获取游标对象
cursor = connection.cursor()
# 使用游标对象的execute方法执行一条SQL语句
# cursor.execute("insert into book(id, name, author) values(null, '了不起的盖茨比', '弗朗西斯·斯科特·基·菲茨杰拉德')")
cursor.execute("select id, name, author from book")
# 如果执行的查询的SQL,则可以指定方法获取查询的结果
# fetchall方法获取所有的查询结果
rows = cursor.fetchall()
for row in rows:
print(row)
return render(request, 'index.html')
注:本文为学习笔记,发现错误欢迎指出。
出处:https://www.cnblogs.com/guyuyun/p/13816968.html
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
SQL Server -- 解决存储过程传入参数作为s
关于JS定时器的整理
JS中使用Promise.all控制所有的异步请求都完
js中字符串的方法
import-local执行流程与node模块路径解析流程
检测数据类型的四种方法
js中数组的方法,32种方法
前端操作方法
数据类型
window.localStorage.setItem 和 localStorage.setIte
如何完美解决前端数字计算精度丢失与数