QueryWise Python GUI
👤 Sharing: AI
import tkinter as tk
from tkinter import ttk
from tkinter import messagebox
import sqlite3
class QueryWise:
def __init__(self, master):
self.master = master
master.title("QueryWise: Your Data Insight Tool")
# Database Connection Setup
self.db_path = "data.db" # Default database path
self.conn = None # Database connection object
self.cursor = None # Database cursor
self.connect_to_db()
# GUI Elements
self.label = ttk.Label(master, text="Enter your SQL Query:")
self.label.pack(pady=5)
self.query_entry = tk.Text(master, height=5, width=60)
self.query_entry.pack(pady=5)
self.execute_button = ttk.Button(master, text="Execute Query", command=self.execute_query)
self.execute_button.pack(pady=10)
self.result_tree = ttk.Treeview(master, columns=('column1',))
self.result_tree.pack(pady=10)
self.result_tree.column('#0', width=0, stretch=tk.NO) # Hide the default empty column
self.clear_button = ttk.Button(master, text="Clear Results", command=self.clear_results)
self.clear_button.pack(pady=5)
self.details_button = ttk.Button(master, text="Details", command=self.show_details)
self.details_button.pack(pady=5)
# Create a sample database if it doesn't exist (for demo)
self.create_sample_database()
def connect_to_db(self):
try:
self.conn = sqlite3.connect(self.db_path)
self.cursor = self.conn.cursor()
except sqlite3.Error as e:
messagebox.showerror("Database Error", f"Error connecting to the database: {e}")
self.master.destroy() # Close the app if DB connection fails
def create_sample_database(self):
try:
self.cursor.execute('''CREATE TABLE IF NOT EXISTS employees
(id INTEGER PRIMARY KEY,
name TEXT,
department TEXT,
salary REAL)''')
# Insert some sample data if the table is empty
self.cursor.execute("SELECT COUNT(*) FROM employees")
count = self.cursor.fetchone()[0]
if count == 0:
self.cursor.execute("INSERT INTO employees (name, department, salary) VALUES ('Alice Smith', 'Marketing', 60000.0)")
self.cursor.execute("INSERT INTO employees (name, department, salary) VALUES ('Bob Johnson', 'Engineering', 75000.0)")
self.cursor.execute("INSERT INTO employees (name, department, salary) VALUES ('Charlie Brown', 'Sales', 55000.0)")
self.conn.commit()
except sqlite3.Error as e:
messagebox.showerror("Database Error", f"Error creating or populating database: {e}")
def execute_query(self):
query = self.query_entry.get("1.0", tk.END).strip()
if not query:
messagebox.showinfo("Info", "Please enter an SQL query.")
return
try:
self.cursor.execute(query)
self.conn.commit()
results = self.cursor.fetchall()
# Clear previous results
self.clear_results()
# Get column names
column_names = [description[0] for description in self.cursor.description]
self.result_tree['columns'] = column_names
for col in column_names:
self.result_tree.heading(col, text=col)
self.result_tree.column(col, width=100) # Adjust width as needed
for row in results:
self.result_tree.insert('', tk.END, values=row)
except sqlite3.Error as e:
messagebox.showerror("Query Error", f"Error executing query: {e}")
def clear_results(self):
for item in self.result_tree.get_children():
self.result_tree.delete(item)
def show_details(self):
details_text = """
QueryWise is a versatile SQL query execution tool.
It allows you to enter and execute SQL queries against a SQLite database.
Features:
- Execute arbitrary SQL queries.
- View results in a tabular format.
- Simple and intuitive GUI.
- Connects to 'data.db' (creates if it doesn't exist).
- Includes a sample 'employees' table for demonstration.
Example Queries:
- SELECT * FROM employees;
- SELECT name, salary FROM employees WHERE department = 'Engineering';
- UPDATE employees SET salary = salary * 1.1 WHERE department = 'Sales';
Note: Make sure 'data.db' is in the same directory as the script, or adjust the db_path.
"""
messagebox.showinfo("Details", details_text)
def on_closing(self):
if self.conn:
self.conn.close()
self.master.destroy()
root = tk.Tk()
query_wise = QueryWise(root)
root.protocol("WM_DELETE_WINDOW", query_wise.on_closing)
root.mainloop()
👁️ Viewed: 5
Comments