# 使用python读取学生信息Excel表,excel表的路径为C:\stu_excel\test_stu.xlsx,将读取到的数据,插 # 入到本地的students数据库当中的students表中,要保证数据的完整性和准确性。 import pymysql import xlrd # import paramiko import os class lrk(): def __init__(self,ip,prot,user,passwd,database): self.ip=ip self.prot=prot self.user=user self.passwd=passwd self.database=database #读取文件内容 def fileread(self): file = r'C:\stu_excel\test_stu.xlsx' data = xlrd.open_workbook(file) table = data.sheet_by_index(0) nrow = table.nrows for a in range(1, nrow): b = table.row_values(a) print(b) #建立链接数据库通道 def db(self): db=pymysql.connect(self.ip,self.user,self.passwd,self.database,self.prot) return db #传入sql数据 def sql(self,db): cursor=db.cursor() file = r'C:\stu_excel\test_stu.xlsx' data = xlrd.open_workbook(file) table = data.sheet_by_index(0) nrow = table.nrows # ['姓名', '性别', '年龄', '学历', '地区', '电话', '备注', '邮箱'] for a in range(1, nrow): b = table.row_values(a) if b[0] == '': b[0]='null' if b[1] == '': b[1]='null' if b[2] == '': b[2]=0 print(b) sql='insert into students(sname,age,gender,phone,education,place,remark,email)values(%s,%s,%s,%s,%s,%s,%s,%s);' values=(b[0],b[2],b[1],b[5],b[3],b[4],b[6],b[7]) cursor.execute(sql,values) #执行sql db.commit()#提交 #判断数据库有没有该表 def pddatabase(self,db): cursor = db.cursor() try: sql='drop table students' cursor.execute(sql) sql1 = 'create table students(sid int PRIMARY KEY AUTO_INCREMENT,sname varchar(20) NOT NULL UNIQUE,age int,gender char(5),phone char(11),education char(3),place varchar(10),remark char(100) DEFAULT "TEST",email varchar(50))' print('建立成功') #写入数据 self.sql(db) #若是删除报错,就执行如下代码 except (Exception): print("没有该表---从新建立") sql2 = 'create table students(sid int PRIMARY KEY AUTO_INCREMENT,sname varchar(20) NOT NULL UNIQUE,age int,gender char(5),phone char(11),education char(3),place varchar(10),remark char(100) DEFAULT "TEST",email varchar(50))' #调用写入sql语句方法,传入数据 cursor.execute(sql2) print('建立成功') self.sql(db) cursor.close() db.close() lk=lrk('127.0.0.1',3306,'root','1234567','students') lk.fileread()#调用读出xlsx文件方法 db=lk.db() lk.pddatabase(db)