繁体   English   中英

如何使用 python ZE5BA8B4C39C29BF13426EF5E0287AAA 将用户选择的 Excel 文件导入 mysql

[英]How to Import an Excel file chosen by user to mysql using python tkinter

如何将用户选择的 Excel 文件(.xlsx)导入 mysql 数据库:
我正在使用 python tkinter GUI
注意:excel 文件将由用户选择

除非您不清楚如何使用 TKinter 的文件对话,否则这看起来不像 TKinter 问题。 这似乎只是一个 Python 问题。 您正在使用 TKinter 似乎与导入文件的过程无关。

您说的是“导入”,所以我假设您的意思是“导入”而不是“操纵”。 除非您正在操作文件的内容或从头开始创建 .xlsx 文件,否则直接使用这种专有格式将是天真的短视。

您应该做的是将电子表格导出为 CSV 文件并导入该文件。 过去我看到“这是一个额外的步骤”的论点,但确保文件以 XML 格式 (.xlsx) 保存,而不是其他许多 Excel 文件格式之一,也是一个额外的步骤 - - 所以真的没有额外的步骤。 即使您确实认为这是一个额外的步骤,也应该期望用户具有最低水平的能力,以允许他们执行诸如将文件导出到 CSV 之类的基本任务。

我不会花很多时间编写工作代码,因为根本没有足够的信息来这样做。 我也好几年没用过 MySQL 了。 在过去的几年里,我几乎所有的数据库内容都在 SQLite 中,但这应该仍然适用。 首先将 MySQL 模块导入程序并创建表:

import mysql.connector as db
conn = db.connect(
    host=<uri>,
    user=<username>,
    password=<password>,
    database=<database_name>
    )
conn.execute("CREATE TABLE <tablename> (<column_definitions>);")

我想这就是我用来连接我的 MySQL 服务器的方式。 我假设您知道 Excel 文件中的数据结构,并且它不仅仅是一些包含未知数据的随机电子表格。

接下来,您将打开文件并读取并插入每一行:

fh = open(<filename>, 'rt')
fh.readline()         #assuming there are headers: discard them
excelFile = fh.read() #read every line of file
for row in excelFile:
    sqlcmd = "INSERT INTO <tablename> (<column_names>) VALUES " + str(tuple(row.split(',')) + ";")
    db.execute(sqlcmd)

这只是我头脑中的一个例子,不会像写的那样工作。 一方面,它只插入字符串; 没有数据验证。 SQLite 对此非常宽容,并且倾向于即时纠正插入的数据,但我对 MySQL 的经验是它的类型更严格。

那应该让你开始。

要获得更完整的答案,了解数据的性质会有所帮助:它是为了工作吗? 您需要多久导入一次此电子表格? 列总是相同的吗? 您是每次都创建一个新表还是插入到现有表中?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM