用Python 点击开始按钮 打开窗口选择多个MDB数据点击确定合并数据库的程序
以下是一个示例代码,实现了点击开始按钮打开文件选择窗口,选择多个MDB文件,点击确定后合并数据库的功能:
import tkinter as tk
from tkinter import filedialog
import os
import pandas as pd
import pyodbc
class MergeMDB:
def __init__(self, master):
self.master = master
master.title("合并MDB数据库")
# 添加开始按钮
self.start_button = tk.Button(master, text="开始", command=self.start)
self.start_button.pack()
def start(self):
# 打开文件选择窗口,选择多个MDB文件
filetypes = (("MDB files", "*.mdb"), ("All files", "*.*"))
filenames = filedialog.askopenfilenames(title="选择MDB文件", filetypes=filetypes)
if not filenames:
return # 如果用户没有选择文件,直接返回
# 合并MDB文件
merged_df = pd.DataFrame()
for filename in filenames:
# 使用pyodbc读取MDB文件中的表格数据
conn_str = f"DRIVER={{Microsoft Access Driver (*.mdb, *.accdb)}};DBQ={filename}"
with pyodbc.connect(conn_str) as conn:
cursor = conn.cursor()
cursor.execute("SELECT * FROM MSysObjects WHERE Type=1 AND Flags=0")
table_names = [row.table_name for row in cursor.fetchall()]
for table_name in table_names:
query = f"SELECT * FROM [{table_name}]"
df = pd.read_sql(query, conn)
merged_df = merged_df.append(df)
# 保存合并后的数据到CSV文件
save_file = filedialog.asksaveasfilename(title="保存合并后的数据", defaultextension=".csv")
if save_file:
merged_df.to_csv(save_file, index=False)
# 提示用户合并完成
tk.messagebox.showinfo("提示", "合并完成!")
root = tk.Tk()
app = MergeMDB(root)
root.mainloop()
代码中使用了tkinter库创建了一个GUI窗口,添加了一个开始按钮,点击按钮后会打开文件选择窗口,让用户选择多个MDB文件。选择完毕后,程序会使用pyodbc库读取MDB文件中的表格数据,合并成一个DataFrame对象,最后将合并后的数据保存到CSV文件中,并提示用户合并完成
原文地址: https://www.cveoy.top/t/topic/cjoO 著作权归作者所有。请勿转载和采集!