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/ns8o 著作权归作者所有。请勿转载和采集!