8.2.2 MySQL数据库的操作(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)

2024-08-10
| 17页
| 86人阅读
| 12人下载
普通

内容正文:

任务8.2 MySQL数据库操作 学生信息管理系统设计 同学们,大家好,欢迎大家来到本课程第8章的学习。在学习开始前,我们先对这章的学习内容给大家作一个简要的介绍。 1 任务8.2 MySQL数据库操作 【任务描述】 除了SQLite数据库,还可以采用MySQL数据库作为后台数据库来实现学生信息管理系统,通过Python连接MySQL数据库,实现学生信息的存储、读取、查找、修改等功能。 任务8.2 MySQL数据库操作 【任务分析】 要想用MySQL数据库来进行数据的存储和管理,就要先实现对MySQL数据库的访问,整体上来说和上节内容一致,但在MySQL数据库的安装、Python访问方式等细节上有一些不同,需要进行必要的调整。 8.2.2 MySQL数据库的操作 同学们,大家好,欢迎大家来到本课程第8章的学习。在学习开始前,我们先对这章的学习内容给大家作一个简要的介绍。 4 8.2.2 MySQL数据库的操作 属性/方法 说明 close() 关闭数据库连接。 commit() 提交数据库事务。 cursor() 获得游标对象。 rollback() 回滚当前数据数据库事务。 pymysql库为Connection对象提供了一些实现了数据库操作的常用方法,如下表所示: 通过连接对象可以关闭数据库连接,除此以外,通过连接对象的方法,实现对数据库的多种操作。如提交数据库事务、获得游标对象、回滚当前数据库事务。 5 游标对象 与SQLite3一样,pymysql也提供了游标对象(Cursor),负责暂时保存SQL操作所影响到的数据。游标对象通过数据库的连接对象的cursor()方法创建,方法如下: cur = conn.cursor() 其中,conn为数据库连接对象变量,cur则为游标对象变量。 8.2.2 MySQL数据库的操作 pymysql的游标对象的创建和使用与sqlite3中相同。 8.2.2 MySQL数据库的操作 属性/方法 说明 connection() 获取当前连接对象 close() 关闭游标 execute(sql[,parameters]) 执行SQL语句,返回受影响的行数。sql是SQL语句,parameters是为sql提供的参数 fetchone() 以元组形式返回一条记录,如果没有结果 则返回 None。 fetchall() 执行SQL查询语句,返回元组序列,即返回查询到的所有记录,如果没有结果则返回 () 游标Cursor对象有很多的属性和方法,其中常用的属性和方法如下: 通过游标对象的方法,python能够实现执行sql语句,获取查询结果等操作。使用方法与sqlite3中相同。 7 编写程序:连接mysql创建数据库dbstu和表tbstu。 1.创建数据库和数据表 【例8-9】创建数据库和数据表。 import pymysql conn = pymysql.connect(host='localhost',user='user',password='123456',charset= 'utf8') cur = conn.cursor() sql_createdb ='create database if not exists dbstu' cur.execute('use dbstu') sql_createtb = ''' create table if not exists tbstu( stuNo varchar(10) primary key, stuName varchar(4), gender varchar(1), age int(3) )' cur.execute(sql_createdb) cur.execute(sql_createtb) conn.commit() cur.close() conn.close() 8.2.2 MySQL数据库的操作 1.创建数据库和数据表 编写程序:连接mysql创建数据库dbstu和表tbstu。 【例8-9】创建数据库和数据表。 import pymysql conn = pymysql.connect(host='localhost',user='user',password='123456',charset= 'utf8') cur = conn.cursor() sql_createdb ='create database if not exists dbstu' cur.execute('use dbstu') 8.2.2 MySQL数据库的操作 sql_createtb = ''' create table if not exists tbstu( stuNo varchar(10) primary key, stuName varchar(4), gender varchar(1), age int(3)) ''' cur.execute(sql_createdb) cur.execute(sql_createtb) conn.commit() cur.close() conn.close() 8.2.2 MySQL数据库的操作 2.数据库异常处理 在编写Python程序对数据库进行操作时,难免会出现一些错误或异常,导致程序终止。为保持数据的一致性,可采用Python的异常处理语句和数据库回滚(rollback)操作,其语法格式如下: try: … except: conn.rollback() 8.2.2 MySQL数据库的操作 首先执行try子句,如果没有异常发生则忽略except子句,在执行try子句之后结束程序;如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。然后执行except子句部分的数据回滚操作,使在该语句中被修改的数据都能被还原。 【例8-10】数据库异常处理。 import pymysql conn = pymysql.connect(host='localhost', user='user',password='123456',charset= 'utf8') cur = conn.cursor() sql_createdb ='create database if not exists dbstu' # 切换到dbstu数据库 cur.execute('use dbstu') 8.2.2 MySQL数据库的操作 sql_createtb = ''' create table if not exists tbstu( stuNo varchar(10) primary key, stuName varchar(4), gender varchar(1), age int(3) ) try: cur.execute(sql_createdb) cur.execute(sql_createtb) conn.commit() # 事务提交 except: conn.rollback() # 事务回滚 cur.close() conn.close() 8.2.2 MySQL数据库的操作 sql_createtb = ''' create table if not exists tbstu( stuNo varchar(10) primary key, stuName varchar(4), gender varchar(1), age int(3) ) try: cur.execute(sql_createdb) cur.execute(sql_createtb) conn.commit() # 事务提交 except: conn.rollback() # 事务回滚 cur.close() conn.close() 3.数据库的基本操作 在Python程序中对MySQL数据库中的数据进行增、删、改、查等操作,与8.1.2节中SQLite数据库的操作基本一致,要注意MySQL与SQLite3的不同,MySQL使用的占位符为“%s”。 8.2.2 MySQL数据库的操作 【例8-11】向表中插入数据。 import pymysql # 在创建数据库对象时,通过”db=’dbstu’”指定连接的数据库名 conn = pymysql.connect(host='localhost', user='user', password='123456',\ db=’dbstu’,charset='utf8') cur = conn.cursor() 8.2.2 MySQL数据库的操作 sql_insert = ''' insert into tbstu values\ ('20201001','钱梅宝','男',20),\ ('20201002','张平光','男',22),\ ('20201003','许动明','男',19),\ ('20201004','张 云','女',19),\ ('20201005','唐 琳','女',20); try: cur.execute(sql_insert) conn.commit() except: conn.rollback() cur.close() conn.close() 【例8-12】应用【例8-11】中的数据库和表,编写程序,根据用户输入的学号或姓名查询数据表记录,实现交互式查询。。 import pymysql conn = pymysql.connect(host='localhost',user='user',password='123456',\ db='dbstu',charset='utf8') cur = conn.cursor() while True: mode = input("请选择查询模式(1、按学号查询,2、按姓名查询):") if mode =="1": srhNo = input('请输入要查询的学生学号:') sql_search = 'select * from tbstu where stuNo=%s;' # %s为占位符 cur.execute(sql_search,srhNo) 8.2.2 MySQL数据库的操作 elif mode =="2": srhName = input('请输入要查询的学生姓名:') sql_search = 'select * from tbstu where stuName=%s;' cur.execute(sql_search,srhName) else: print("输入错误,请重新输入。") continue rows = cur.fetchall() print("查询信息如下:") print("学号\t\t姓名\t性别\t年龄") 8.2.2 MySQL数据库的操作 for row in rows: print("%s\t%s\t%s\t%s"%(row[0], row[1],row[2],row[3])) key = input('按“Y”键继续,其他键退出。') if key.upper() == 'Y': continue else: print('谢谢使用!') break bcur.close() conn.close() $$

资源预览图

8.2.2  MySQL数据库的操作(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
1
8.2.2  MySQL数据库的操作(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
2
8.2.2  MySQL数据库的操作(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
3
8.2.2  MySQL数据库的操作(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
4
8.2.2  MySQL数据库的操作(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
5
8.2.2  MySQL数据库的操作(课件)-《程序设计基础(Python)》同步教学(电子工业出版社)
6
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。