| 5 | |
| 6 | |
| 7 | class DatabaseManagerGUI: |
| 8 | def __init__(self, root): |
| 9 | self.root = root |
| 10 | self.root.title("数据库管理工具") |
| 11 | |
| 12 | self.db_urls = { |
| 13 | "database1": "sqlite:///database1.db", |
| 14 | "database2": "sqlite:///database2.db" |
| 15 | } |
| 16 | |
| 17 | self.db_manager = DatabaseManager(self.db_urls) |
| 18 | |
| 19 | self.db_select_label = tk.Label(self.root, text="选择数据库:") |
| 20 | self.db_select_label.pack() |
| 21 | |
| 22 | self.db_combo = ttk.Combobox(self.root, values=list(self.db_urls.keys())) |
| 23 | self.db_combo.pack() |
| 24 | |
| 25 | self.table_label = tk.Label(self.root, text="表格:") |
| 26 | self.table_label.pack() |
| 27 | |
| 28 | self.table_listbox = tk.Listbox(self.root) |
| 29 | self.table_listbox.pack() |
| 30 | |
| 31 | self.column_label = tk.Label(self.root, text="列名:") |
| 32 | self.column_label.pack() |
| 33 | |
| 34 | self.column_listbox = tk.Listbox(self.root) |
| 35 | self.column_listbox.pack() |
| 36 | |
| 37 | self.query_label = tk.Label(self.root, text="SQL 查询:") |
| 38 | self.query_label.pack() |
| 39 | |
| 40 | self.query_text = tk.Text(self.root, height=5, width=50) |
| 41 | self.query_text.pack() |
| 42 | |
| 43 | self.execute_button = tk.Button(self.root, text="执行查询", command=self.execute_query) |
| 44 | self.execute_button.pack() |
| 45 | |
| 46 | self.root.mainloop() |
| 47 | |
| 48 | def update_table_list(self): |
| 49 | self.table_listbox.delete(0, tk.END) |
| 50 | tables = self.db_manager.get_table_list(self.db_combo.get()) |
| 51 | for table in tables: |
| 52 | self.table_listbox.insert(tk.END, table) |
| 53 | |
| 54 | def update_column_list(self): |
| 55 | self.column_listbox.delete(0, tk.END) |
| 56 | selected_table = self.table_listbox.get(tk.ACTIVE) |
| 57 | columns = self.db_manager.get_column_list(self.db_combo.get(), selected_table) |
| 58 | for column in columns: |
| 59 | self.column_listbox.insert(tk.END, column) |
| 60 | |
| 61 | def execute_query(self): |
| 62 | selected_db = self.db_combo.get() |
| 63 | query = self.query_text.get("1.0", tk.END).strip() |
| 64 | |