51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

使用Python从Word文档读取表格数据并更新到数据库

引言 {#%E5%BC%95%E8%A8%80}

在日常工作中,我们经常遇到需要从各种文档中提取数据并更新到数据库的情况。这篇博客将展示如何使用Python来自动化这个过程,具体来说,是从一个Microsoft Word文档中读取数据,并将这些数据更新到MySQL数据库中

使用场景 {#%E4%BD%BF%E7%94%A8%E5%9C%BA%E6%99%AF}

假设我们有一个Word文档,里面包含了多个用户的用户名和密码,我们需要将这些信息更新到MySQL数据库中。这种情况在实际工作中可能会遇到,例如在用户迁移或批量更新凭据的情境下。

工具和库 {#%E5%B7%A5%E5%85%B7%E5%92%8C%E5%BA%93}

  • Python:我们的脚本语言。

  • python-docx:用于读取Word文档的Python库。

  • MySQL Connector/Python:用于连接MySQL数据库的Python库

步骤概述 {#%E6%AD%A5%E9%AA%A4%E6%A6%82%E8%BF%B0}

  1. 安装必要的库 :确保安装python-docxmysql-connector-python库。

  2. 读取Word文档 :使用python-docx库从Word文档中读取用户名和密码。

  3. 连接MySQL数据库 :使用mysql.connector连接到MySQL数据库。

  4. 更新数据库:对于文档中的每个用户,使用其用户名找到对应的数据库记录,并更新密码。

代码实现 {#%E4%BB%A3%E7%A0%81%E5%AE%9E%E7%8E%B0}

安装依赖库 {#%E5%AE%89%E8%A3%85%E4%BE%9D%E8%B5%96%E5%BA%93}

pip install python-docx mysql-connector-python

Python脚本示例 {#python%E8%84%9A%E6%9C%AC%E7%A4%BA%E4%BE%8B}

from docx import Document
import mysql.connector

def update_passwords(doc_path, db_config):
try:
con = mysql.connector.connect(\*\*db_config)
cursor = con.cursor()
doc = Document(doc_path)


        tables = doc.tables
        table = tables[0]

        for i in range(1, len(table.rows)):
            username = table.cell(i, 2).text
            new_password = table.cell(i, 3).text

            update_query = "UPDATE table_name SET password = %s WHERE username = %s"
            cursor.execute(update_query, (new_password, username))
            print(f"Updated password for username: {username}")

        con.commit()

    except mysql.connector.Error as err:
        print("Database error: ", err)
    finally:
        if con.is_connected():
            cursor.close()
            con.close()




配置和文档路径
=======



db_config = {
"host": "your_db_host",
"port": 3306,
"database": "your_db_name",
"user": "your_username",
"passwd": "your_password",
"charset": 'utf8'
}
doc_path = 'your_doc_path.docx'

`update_passwords(doc_path, db_config)`


docx文件示例 {#docx%E6%96%87%E4%BB%B6%E7%A4%BA%E4%BE%8B}

2023-12-27-ayysoreu.png

demo.docx


注意事项 {#%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9}

  • 数据安全和隐私:处理用户名和密码时,要特别注意数据安全和隐私。

  • 错误处理:合理处理可能出现的异常,如数据库连接失败等。

  • 测试:在生产环境中应用之前,先在测试环境中验证脚本的正确性。

遇到的问题 {#%E9%81%87%E5%88%B0%E7%9A%84%E9%97%AE%E9%A2%98}

当sql只有一个参数时

cursor.execute() 方法时报错 `Database error: Could not process parameters: str(tb001), it must be of type list, tuple or dict`

这个错误信息表明在执行查询时传递了错误类型的参数给cursor.execute方法。在MySQL Connector/Python中,当您的SQL语句需要参数时,这些参数应该以列表、元组或字典的形式传递。如果您只有一个参数,即使是单个值,它也应该作为一个元组或列表传递。

需要以如下方式传递参数:

  • 作为一个元组:cursor.execute(query, (param_value,))

  • 或作为一个列表:cursor.execute(query, [param_value])

结语 {#%E7%BB%93%E8%AF%AD}

通过Python自动化处理常见的数据迁移和更新任务,不仅可以节省大量时间,还能减少人为错误。希望这篇文章能帮助你理解这一过程,并在你的工作中派上用场。


赞(0)
未经允许不得转载:工具盒子 » 使用Python从Word文档读取表格数据并更新到数据库