Python读取xlsx文件上传到数据库中

# 使用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)
相关文章
相关标签/搜索