百木园-与人分享,
就是让自己快乐。

山西财经大学《数据库技术及程序设计(Python+MySQL)》实验报告

MySQL 实验@font-face { font-family: \"Times New Roman\" }
\\3cp>@font-face { }
\\3c/p>
\\3cp>@font-face { }
\\3c/p>
\\3cp>@font-face { }
\\3c/p>
\\3cp>@font-face { }
\\3c/p>
\\3cp>@list l0:level1 { }
\\3c/p>
\\3cp>p.MsoNormal { }
\\3c/p>
\\3cp>span.10 { }
\\3c/p>
\\3cp>span.15 { }
\\3c/p>
\\3cp>span.16 { }
\\3c/p>
\\3cp>p.MsoHeader { }
\\3c/p>
\\3cp>p.MsoFooter { }
\\3c/p>
\\3cp>p.pre { }
\\3c/p>
\\3cp>span.msoIns { }
\\3c/p>
\\3cp>span.msoDel { }
\\3c/p>
\\3cp>table.MsoNormalTable { }
\\3c/p>
\\3cp>table.MsoTableGrid { }
\\3cbr>
@page { mso-page-border-surround-header: no }
@page Section0 { }
\\3cbr>
div.Section0 { page: Section0 }

山西财经大学《数据库技术及程序设计(Python+MySQL)》实验报告

                       20xx年  xx  xx

实验题目

PythonMySQL数据库

学    院

 

班      级

 

姓    名

 

学      号

 

理论课教师

上机指导教师

实验目的:

(1)掌握Python连接数据库的方法,掌握python使用MySQL应用数据库的方法。

(2)熟悉MySQL(使用Front或Workbench等)可视化工具创建使用数据库的方法。

(3)熟练掌握SQL语言操作数据库的方法。能够通过SQL语言创建数据库和表、对数据表进行增删改查操作,创建表间的关系、进行级联更新等操作。

(4)能够通过python访问MySQL数据库,并进行数据库的相关操作。

 

实验要求:

1)自行设想一个应用场景,设计一个数据库,该数据库中设计两个以上有关联的表。

2MySQL(可使用使用Front或Workbench等可视化工具)创建该数据库,并建立其中一个表。

(3)使用python编程访问建立好的MySQL数据库,并完成下述操作:

①建立表结构;

②给各个表中添加记录数据;

③给其中一个表中插入一个字段;

④更新一个表中满足条件的记录;

⑤查找一个表中满足某个条件的记录;

⑥删除某个表中的满足某个条件的记录;

⑦建立两个表之间的关系(注意主键和外键的设置);

⑧更新建立关系的两个表中主表的记录,要求子表对应的记录相应更新;

⑨删除建立关系的两个表中的子表。

 

操作步骤(可附主要代码):

 

1.  创建数据库

山西财经大学《数据库技术及程序设计(Python+MySQL)》实验报告山西财经大学《数据库技术及程序设计(Python+MySQL)》实验报告  

2.  创建数据表

山西财经大学《数据库技术及程序设计(Python+MySQL)》实验报告山西财经大学《数据库技术及程序设计(Python+MySQL)》实验报告  

山西财经大学《数据库技术及程序设计(Python+MySQL)》实验报告  

 

3.  注:本次实验使用pycharm+jupyter+anaconda环境,所用到的库为pymysql,数据库为本地创建数据库。

import pymysqlmysql_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)

     山西财经大学《数据库技术及程序设计(Python+MySQL)》实验报告

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\")

  山西财经大学《数据库技术及程序设计(Python+MySQL)》实验报告

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\")

执行前:

山西财经大学《数据库技术及程序设计(Python+MySQL)》实验报告  

执行后:

 

山西财经大学《数据库技术及程序设计(Python+MySQL)》实验报告  

 

4

mycursor = mysql_conn.cursor()sql = \"UPDATE xs SET sname = \'刘自立\' WHERE sno = \'95004\'\"mycursor.execute(sql)mysql_conn.commit()

display(\"xs\")

执行前:

山西财经大学《数据库技术及程序设计(Python+MySQL)》实验报告  

执行后

山西财经大学《数据库技术及程序设计(Python+MySQL)》实验报告  

(5)

sql=\"select * from xs where sno=\'95004\'\"myCursor.execute(sql)myresult=myCursor.fetchall()for x in myresult:    print(x)

山西财经大学《数据库技术及程序设计(Python+MySQL)》实验报告  

(6)

sql=\"delete from kc where cno=\'7\'\"myCursor.execute(sql)display(\'kc\')

执行前:

山西财经大学《数据库技术及程序设计(Python+MySQL)》实验报告  

执行后:

山西财经大学《数据库技术及程序设计(Python+MySQL)》实验报告  

 

(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)

山西财经大学《数据库技术及程序设计(Python+MySQL)》实验报告  

由于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\")

执行前

山西财经大学《数据库技术及程序设计(Python+MySQL)》实验报告  

执行后

山西财经大学《数据库技术及程序设计(Python+MySQL)》实验报告  

 

9

sql = \"DROP TABLE IF EXISTS xs_kc\"myCursor.execute(sql)try:    display(\"xs_kc\")except :    print(\'xs_kc已删除\')

 

山西财经大学《数据库技术及程序设计(Python+MySQL)》实验报告  

 

实验中发现的问题及解决方法:

1.插入数据时遇到“TypeError: not enough arguments for format string

山西财经大学《数据库技术及程序设计(Python+MySQL)》实验报告  

解决方案:

使用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
图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » 山西财经大学《数据库技术及程序设计(Python+MySQL)》实验报告

相关推荐

  • 暂无文章