import gradio as gr import sqlite3 import pandas as pd # Database file db_file = "attendance_records.db" # Helper Functions def get_table_names(): """Retrieve the names of all tables in the database.""" conn = sqlite3.connect(db_file) cursor = conn.cursor() cursor.execute(""" SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%'; """) tables = [row[0] for row in cursor.fetchall()] conn.close() return tables def query_table(table_name): """Query the selected table and return its content as a DataFrame.""" conn = sqlite3.connect(db_file) try: df = pd.read_sql_query(f"SELECT * FROM {table_name}", conn) except Exception as e: conn.close() return str(e) conn.close() return df def display_table(table_name): """Fetch and display the contents of the selected table.""" df = query_table(table_name) if isinstance(df, pd.DataFrame): return df else: return f"Error fetching data: {df}" # Gradio App def create_gradio_app(): with gr.Blocks() as app: gr.Markdown("# Database Query Interface") gr.Markdown("### Select a table to view its contents") table_selector = gr.Dropdown(choices=get_table_names(), label="Select Table") output = gr.Dataframe(label="Table Data", interactive=False) table_selector.change( fn=display_table, inputs=table_selector, outputs=output, ) return app app = create_gradio_app() app.launch()