VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > temp > python入门教程 >
  • 山西财经大学《数据库技术及程序设计(Python+MySQL)》实验报告

山西财经大学《数据库技术及程序设计(Python+MySQL)》实验报告
                       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")
执行前:    执行后:   
 
(5)
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


相关教程