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

系统 1748 0
原文链接: 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
              
                (
              
              
                )
              
            
          

根据需求更改main中的表数据即可,毫秒级别的导入啊


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论