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)
相關文章
相關標籤/搜索