# 使用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)