将MySQL表导入xls文件,将word文档导入MySQL

引言

最近接了一单,要求是用Python做一个小程序
1. 可以将MySQL中任意的表导出至Excel文件
2. 可以将任意Word文档的内容保存至MySQL中

配置开发环境

我使用的Python版本是3.7,下面的教程应该不适用于Python2。

安装pymysql库

这个库可以对MySQL进行处理
打开cmd,输入以下命令并回车
pip3 install pymysql

安装xlwt库

这个库是用来操作xls文件的
pip3 install xlwt

安装python-docx库

这个库用来读写docx文件,不支持doc文件
pip3 install python-docx

可能出现的问题

  1. 输入上述命令出现cmd的错误提示,说明没有配置环境变量。自行百度Python环境变量配置。
  2. 连接很长时间后自己退出或者下载速度超级慢。将下载源更换为国内源即可。在上面的命令后加上-i https://pypi.tuna.tsinghua.edu.cn/simple即可。

代码

# -*- coding: utf-8 -*-
# www.guanhaobo.cn

import xlwt
import docx
import pymysql


def MysqlToExcel(UserName, Password, Database, TableName, SaveName):
    # UserName是MySQL账号,Password为MySQL密码,Database是数据库的名称,TableName是表的名称,SaveName是要保存的excel的名称

    # 打开数据库连接
    db = pymysql.connect("localhost", UserName, Password, Database)

    # 使用cursor()方法获取操作游标
    cursor = db.cursor()

    count = cursor.execute('select * from '+TableName)
    # print(cursor.lastrowid)
    print("发现", count, "条记录")
    # 重置游标的位置
    cursor.scroll(0, mode='absolute')
    # 搜取所有结果
    results = cursor.fetchall()

    # 获取MYSQL里面的数据字段名称
    fields = cursor.description
    workbook = xlwt.Workbook()

    # 注意: 在add_sheet, 置参数cell_overwrite_ok=True, 可以覆盖原单元格中的数据
    # cell_overwrite_ok默认为False, 覆盖的话, 会抛出异常
    sheet = workbook.add_sheet('table_'+TableName, cell_overwrite_ok=True)

    # 写上字段信息
    for field in range(0, len(fields)):
        sheet.write(0, field, fields[field][0])
        print(fields[field][0], end='  ')
    print()

    # 获取并写入数据段信息
    row = 1
    col = 0
    for row in range(1, len(results)+1):
        for col in range(0, len(fields)):
            sheet.write(row, col, u'%s' % results[row-1][col])
            print(results[row-1][col], end='  ')
        print()

    workbook.save(SaveName+".xls")
    print("成功写入", count, "条记录到"+SaveName+".xls")


def WordToMysql(UserName, Password, Database, TableName, FileName):
    # 获取文档对象
    file = docx.Document(FileName)

    # 输出段落编号及段落内容
    for i in range(len(file.paragraphs)):
        print("第"+str(i+1)+"段的内容是:"+file.paragraphs[i].text)

    # 打开数据库连接
    db = pymysql.connect("localhost", UserName, Password, Database)

    # 使用cursor()方法获取操作游标
    cursor = db.cursor()
    try:
        # 创建数据表SQL语句
        sql = "CREATE TABLE "+TableName + " (Paragraph varchar(500))"

        # 执行sql语句
        cursor.execute(sql)
        # 提交到数据库执行
        db.commit()
    except:
        print("出错了......或许"+TableName+"已经存在了!")
        return
    for i in range(len(file.paragraphs)):
        print("成功插入第"+str(i+1)+"段......")
        text = '"'+file.paragraphs[i].text+'"'
        # SQL 插入语句
        sql = "INSERT INTO "+TableName+"(Paragraph) VALUES (" + text + ")"
        try:
            # 执行sql语句
            cursor.execute(sql)
            # 提交到数据库执行
            db.commit()
        except:
            print("出错了......")

    # 关闭数据库连接
    db.close()
    print("成功将"+FileName+"中的数据写入表"+TableName+"中!")


if __name__ == '__main__':
    while True:
        print("    **************************************************************")
        print("    *                 1. 将MySQL的表中数据导出至Excel            *")
        print("    *                 2. 将Word文件导入MySQL                     *")
        print("    *                 0. 退出程序                                *")
        print("    **************************************************************")
        a = int(input("请选择:"))
        if a == 1:
            print("    **************************************************************")
            print("    *                  将MySQL的表中数据导出至Excel              *")
            print("    **************************************************************")
            UserName = input("请输入MySQL账号:")
            Password = input("请输入MySQL密码:")
            Database = input("请输入数据库名称:")
            TableName = input("请输入表的名称:")
            SaveName = input("请输入保存的excel文件名(无需扩展名):")
            MysqlToExcel(UserName, Password, Database, TableName, SaveName)
        elif a == 2:
            print("    **************************************************************")
            print("    *                   将Word文件导入MySQL                      *")
            print("    **************************************************************")
            UserName = input("请输入MySQL账号:")
            Password = input("请输入MySQL密码:")
            Database = input("请输入数据库名称:")
            TableName = input("请输入想要新建的表的名称:")
            FileName = input("请输入word文件的路径(只支持docx文件,如:D:\\test\\你好.docx):")
            WordToMysql(UserName, Password, Database, TableName, FileName)
        elif a == 0:
            input("按回车退出程序......")
            exit()

运行结果

将MySQL中的表导出至xls

将MySQL中的表导出至xls

生成的xls文件

生成的xls文件

示例中word文档的内容

示例中word文档的内容

将docx文件保存至MySQL

将docx文件保存至MySQL

MySQL中的结果

MySQL中的结果

2 个评论 在 “将MySQL表导入xls文件,将word文档导入MySQL

发表评论

电子邮件地址不会被公开。 必填项已用*标注

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部