使用Python从Word文档读取表格数据并更新到数据库
编辑引言
在日常工作中,我们经常遇到需要从各种文档中提取数据并更新到数据库的情况。这篇博客将展示如何使用Python来自动化这个过程,具体来说,是从一个Microsoft Word文档中读取数据,并将这些数据更新到MySQL数据库中
使用场景
假设我们有一个Word文档,里面包含了多个用户的用户名和密码,我们需要将这些信息更新到MySQL数据库中。这种情况在实际工作中可能会遇到,例如在用户迁移或批量更新凭据的情境下。
工具和库
Python:我们的脚本语言。
python-docx:用于读取Word文档的Python库。
MySQL Connector/Python:用于连接MySQL数据库的Python库
步骤概述
安装必要的库:确保安装
python-docx
和mysql-connector-python
库。读取Word文档:使用
python-docx
库从Word文档中读取用户名和密码。连接MySQL数据库:使用
mysql.connector
连接到MySQL数据库。更新数据库:对于文档中的每个用户,使用其用户名找到对应的数据库记录,并更新密码。
代码实现
安装依赖库
pip install python-docx mysql-connector-python
Python脚本示例
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文件示例
注意事项
数据安全和隐私:处理用户名和密码时,要特别注意数据安全和隐私。
错误处理:合理处理可能出现的异常,如数据库连接失败等。
测试:在生产环境中应用之前,先在测试环境中验证脚本的正确性。
遇到的问题
当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])
结语
通过Python自动化处理常见的数据迁移和更新任务,不仅可以节省大量时间,还能减少人为错误。希望这篇文章能帮助你理解这一过程,并在你的工作中派上用场。
- 3
- 0
-
分享