Python3将excel中的数据导入mysql数据库

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Anwel/article/details/79967261
import pymysql
# xlrd 为 python 中读取 excel 的库,支持.xls 和 .xlsx 文件
# import xlrd

# openpyxl 库支持 .xlsx 文件的读写
from openpyxl.reader.excel import load_workbook
from builtins import int

#cur 是数据库的游标链接,path 是 excel 文件的路径
def importExcelToMysql(cur, path):

    ### xlrd版本
    # 读取excel文件
    # workbook = xlrd.open_workbook(path)
    # sheets = workbook.sheet_names()
    # worksheet = workbook.sheet_by_name(sheets[0])
    ###

    ### openpyxl版本
    # 读取excel文件
    workbook = load_workbook(path)
    # 获得所有工作表的名字
    sheets = workbook.get_sheet_names()
    # 获得第一张表
    worksheet = workbook.get_sheet_by_name(sheets[0])
    ###

    ### xlrd版本
    # 将表中数据读到 sqlstr 数组中
    # for i in range(1, worksheet.nrows):
    #     row = worksheet.row(i)
    #
    #     sqlstr = []
    #
    #     for j in range(0, worksheet.ncols):
    #         sqlstr.append(worksheet.cell_value(i, j))
    ###

    ### openpyxl版本
    # 将表中每一行数据读到 sqlstr 数组中
    for row in worksheet.rows:

        sqlstr = []

        for cell in row:
            sqlstr.append(cell.value)
    ###

        valuestr = [str(sqlstr[0]), int(sqlstr[1]), int(sqlstr[2]), int(sqlstr[3])]

        # 将每行数据存到数据库中
        cur.execute("insert into student(姓名, 语文, 数学, 英语) values(%s, %s, %s, %s)", valuestr)

# 输出数据库中内容
def readTable(cursor):
    # 选择全部
    cursor.execute("select * from student")
    # 获得返回值,返回多条记录,若没有结果则返回()
    results = cursor.fetchall()

    for i in range(0, results.__len__()):
        for j in range(0, 4):
            print(results[i][j], end='\t')

        print('\n')

if __name__ == '__main__':
    # 和数据库建立连接
    conn = pymysql.connect('localhost', 'root', '123456', charset='utf8')
    # 创建游标链接
    cur = conn.cursor()

    # 新建一个database
    cur.execute("drop database if exists students")
    cur.execute("create database students")
    # 选择 students 这个数据库
    cur.execute("use students")

    # sql中的内容为创建一个名为student的表
    sql = """CREATE TABLE IF NOT EXISTS `student` (
                `姓名` VARCHAR (20),
                `语文` INT,
                `数学` INT,
                `英语` INT
              )"""
    # 如果存在student这个表则删除
    cur.execute("drop table if exists student")
    # 创建表
    cur.execute(sql)

    # 将 excel 中的数据导入 数据库中
    importExcelToMysql(cur, "./student.xlsx")
    readTable(cur)

    # 关闭游标链接
    cur.close()
    conn.commit()
    # 关闭数据库服务器连接,释放内存
    conn.close()
阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页