注册 登录
MySQL基础教程

第一章: 环境搭建,安装MySQL

第二章: 掌握数据库的核心概念

第三章: MySQL服务与Show命令

第四章: 创建数据库与数据表

第五章: MySQL增查改删

第六章: 在Python中操作MySQL

首页 > MySQL基础教程 > 第六章: 在Python中操作MySQL > 6.2节: MySQLdb用法详解

6.2节: MySQLdb用法详解

薯条老师 2021-12-08 16:29:08 156645 0

编辑 收藏

广州番禺Python, Java小班周末班培训

薯条老师的线下Python,Java小班周末班已经开课了,培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析,Java后端开发。授课详情请点击:http://chipscoco.com/?cate=6

6.2.1 MySQLdb使用流程

(1) 通过MySQLdb的connect方法来构造一个数据库连接对象
(2) 执行数据库连接对象的cursor方法来获取游标对象
(3) 通过游标对象的execute或executemany方法对MySQL数据库进行增查改删
(4) 通过游标对象fetchone或fetchall方法来获取在execute或executemany方法中执行的结果
(5) 通过数据库连接对象的commit方法来提交当前的所有事务操作

6.2.2 构造数据库连接对象

MySQLdb模块的connect方法:

MySQLdb.connect(host="localhost", user="", password="", db="", charset="utf8")

参数解释:

host表示mysql服务器的地址,默认值为localhost, 表示本机。user为数据库的账号,password为数据库的密码,db为连接的数据库, charset为数据库的字符集编码,charset必需指定正确的字符集编码,否则会出现乱码。

返回值:

返回一个数据库的连接对象

6.2.3 游标对象的常用操作

通过数据库连接对象的cursor方法来构造游标对象, 再通过游标对象的execute方法或executemany方法来执行SQL语句。

游标对象的execute和executemany方法:

cursor.execute(query, args=None)
cursor.executemany(query, args)

query参数表示查询的sql语句,当在查询sql中使用了%s符号来做占位符时,必须在execute方法中通过args来传递对应的实参。举个简单的例子,查询商品表中id为1的记录,硬编码的写法为:

sql = "select id, name, price from goods where id=1"
cursor.execute(sql)

通过args来传递实参的写法为:

sql = "select id, name, price from goods where id=%s"
# (1,)中的1对应的是sql中的占位符%s
cursor.execute(sql,(1, ))

sql = "select id, name, price from goods where id in (%s, %s)"
# (1,2)中的1对应的是第一个%s占位符,2对应的是第2个%s占位符
cursor.execute(sql,(1, 2))

executemany用来执行数据库的批量操作。在使用executemany进行批量操作时,args实参必须传递, 且args中的每一项对应到数据库中的一条记录。executemany方法用法实例:

sql = "insert into goods(name, price) values(%s, %s)"
# 往商品表中插入两条记录,[]中的每一项对应的是sql中的一个%s占位符
cursor.executemany(sql, [("湖南辣条", 26), ("东北大米", 128)])

execute和executemany方法的返回值为数据库中受影响的行数,我们可通过该返回值来判断是否操作成功。

sql = "select id, name, price from goods where id in (%s, %s)"
# (1,2)中的1对应的是第一个%s占位符,2对应的是第2个%s占位符
affected_rows = cursor.execute(sql,(1, 2))

# 可根据execute或executemany方法的返回值来判断是否操作成功
if affected_rows > 0:
    print("操作成功")

游标对象的fetchone和:fetchall方法
通过fetchone方法来获取游标中的一行记录,如需获取游标中的所有记录,则应使用fetchall方法。关于MySQLdb模块的完整代码实例,详见http://chipscoco.com/?id=302

6.2.4 提交所有事务操作

当使用游标对象对数据库进行插入,更新,删除操作后,需再通过数据库连接对象的commit方法来提交当前的所有事务操作。关于MySQLdb模块的完整代码实例,详见http://chipscoco.com/?id=302

6.2.5 高薪就业班

(1) Python后端工程师高薪就业班,月薪10K-15K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,免费领取课程大纲
(3) Java后端开发工程师高薪就业班,月薪10K-20K, 免费领取课程大纲
(4) Python大数据工程师就业班,月薪12K-25K,免费领取课程大纲

扫码免费领取学习资料:



欢迎 发表评论:

请登录

忘记密码我要注册

注册账号

已有账号?请登录