当前位置:
首页 > temp > python入门教程 >
-
山西财经大学《数据库技术及程序设计(Python+MySQL)》实验报告
山西财经大学《数据库技术及程序设计(Python+MySQL)》实验报告
20xx年 xx月 xx日
20xx年 xx月 xx日
实验题目 | Python与MySQL数据库 | |||||||||||||||||||
学 院 | 班 级 | |||||||||||||||||||
姓 名 | 学 号 | |||||||||||||||||||
理论课教师 | 上机指导教师 | |||||||||||||||||||
实验目的: (1)掌握Python连接数据库的方法,掌握python使用MySQL应用数据库的方法。 (2)熟悉MySQL(使用Front或Workbench等)可视化工具创建使用数据库的方法。 (3)熟练掌握SQL语言操作数据库的方法。能够通过SQL语言创建数据库和表、对数据表进行增删改查操作,创建表间的关系、进行级联更新等操作。 (4)能够通过python访问MySQL数据库,并进行数据库的相关操作。 实验要求: (1)自行设想一个应用场景,设计一个数据库,该数据库中设计两个以上有关联的表。 (2)MySQL(可使用使用Front或Workbench等可视化工具)创建该数据库,并建立其中一个表。 (3)使用python编程访问建立好的MySQL数据库,并完成下述操作: ①建立表结构; ②给各个表中添加记录数据; ③给其中一个表中插入一个字段; ④更新一个表中满足条件的记录; ⑤查找一个表中满足某个条件的记录; ⑥删除某个表中的满足某个条件的记录; ⑦建立两个表之间的关系(注意主键和外键的设置); ⑧更新建立关系的两个表中主表的记录,要求子表对应的记录相应更新; ⑨删除建立关系的两个表中的子表。 |
||||||||||||||||||||
操作步骤(可附主要代码): 1. 创建数据库 2. 创建数据表 3. 注:本次实验使用pycharm+jupyter+anaconda环境,所用到的库为pymysql,数据库为本地创建数据库。 import pymysql mysql_conn = pymysql.connect(host= '127.0.0.1', port= 3306, user= 'lingqin', password= '*****', db= 'xscj') def display(table_name): sql="select * from "+table_name myCursor.execute(sql) myresult = myCursor.fetchall() for x in myresult: print(x) (1) #建立表结构 myCursor = mysql_conn.cursor() myCursor.execute("create table xs_kc (sno char(6),cno char(5), grade int)") myCursor.execute("create table kc (cno char(6),cname varchar(20), Ctime tinyint,Ccredit int)") sql="ALTER TABLE kc add constraint PK_cno primary key (cno)" myCursor.execute(sql) sql="ALTER TABLE xs_kc add constraint PK_sno_cno primary key(sno,cno)" myCursor.execute(sql) myCursor.execute("SHOW TABLES") for x in myCursor: print(x) (2)#给各个表中添加记录数据; mycursor = mysql_conn.cursor() sql="insert into xs(sno,sname,ssex,sbirth,sdept)values(%s,%s,%s,%s,%s)" val=[ ('95001','李勇','男','20','CS'), ('95002','刘晨','女','19','IS'), ('95003','王敏','女','18','MA'), ('95004','张立','男','19','IS'), ('95005','刘云','女','18','CS') ] myCursor.executemany(sql, val) mysql_conn.commit() sql="insert into kc(cno,cname,Ctime,Ccredit)values(%s,%s,%s,%s)" val=[ ("1","数据库",4,5), ("2","数学",6,7), ("3","信息系统",3,1), ("4","操作系统",4,6), ("5","数据结构",4,7), ("6","数据处理",3,4), ("7","PASCAL语言",4,6) ] myCursor.executemany(sql, val) mysql_conn.commit() sql="insert into xs_kc(sno,cno,grade)values(%s,%s,%s)" val=[ ('95001','1',92), ('95001','2',85), ('95001','3',88), ('95002','2',90), ('95002','3',80), ('95003','2',85), ('95004','1',58), ('95004','2',85) ] myCursor.executemany(sql, val) mysql_conn.commit() display("xs") display("kc") display("xs_kc") (3) sql="insert into xs_kc(sno,cno,grade)value(%s,%s,%s)" val=('95004','3','88') myCursor.execute(sql, val) mysql_conn.commit() display("xs_kc")
(4) mycursor = mysql_conn.cursor() sql = "UPDATE xs SET sname = '刘自立' WHERE sno = '95004'" mycursor.execute(sql) mysql_conn.commit() display("xs")
sql="select * from xs where sno='95004'" myCursor.execute(sql) myresult=myCursor.fetchall() for x in myresult: print(x) (6) sql="delete from kc where cno='7'" myCursor.execute(sql) display('kc')
(7) sql=' alter table xs_kc add index(cno)' myCursor.execute(sql) sql=' alter table xs_kc add index(sno)' myCursor.execute(sql) sql=' alter table xs_kc add constraint xsKc_kc1 foreign key(cno) references kc(cno)ON DELETE CASCADE ON UPDATE CASCADE' myCursor.execute(sql) sql=' alter table xs_kc add constraint xsKc_kc2 foreign key(sno) references xs(sno)ON DELETE CASCADE ON UPDATE CASCADE' myCursor.execute(sql) (由于mysql workbenth长时间无刷新无法展示外键关系,我采用pycharm自带工具展示执行结果) (8) myCursor = mysql_conn.cursor() sql = "UPDATE xs SET sno = '95010' WHERE sname = '刘自立'" myCursor.execute(sql) mysql_conn.commit() display("xs") display("xs_kc")
(9) sql = "DROP TABLE IF EXISTS xs_kc" myCursor.execute(sql) try: display("xs_kc") except : print('xs_kc已删除') |
||||||||||||||||||||
实验中发现的问题及解决方法: 1.插入数据时遇到“TypeError: not enough arguments for format string” 解决方案: 使用myCursor.execute(sql, val)替换myCursor.executemany(sql, val) 2.插入数据时发生“IntegrityError: (1062, "Duplicate entry '95001-3' for key 'xs_kc.PRIMARY'")” 解决方案: 插入数据已存在,更改即将插入的数据,直至使其满足能插入的条件。 |
||||||||||||||||||||
教师评语 | ||||||||||||||||||||
成 绩 |
出处:https://www.cnblogs.com/LQ-HY/p/15204018.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
如何完美解决前端数字计算精度丢失与数