Mustehson commited on
Commit
6e47eb5
·
1 Parent(s): 323893f

Added Database Schemas

Browse files
Files changed (1) hide show
  1. app.py +14 -11
app.py CHANGED
@@ -40,19 +40,22 @@ print('Model Loaded...')
40
  print(f'Model Device: {model.device}')
41
 
42
  # Get Databases
43
- def get_databases():
44
- databases = conn.execute("PRAGMA show_databases").fetchall()
45
- return [item[0] for item in databases]
 
 
 
 
46
 
47
  # Get Tables
48
- def get_tables(database):
49
- conn.execute(f"USE {database}")
50
- tables = conn.execute("SHOW TABLES").fetchall()
51
  return [table[0] for table in tables]
52
 
53
  # Update Tables
54
- def update_tables(selected_db):
55
- tables = get_tables(selected_db)
56
  return gr.update(choices=tables)
57
 
58
  # Get Schema
@@ -130,7 +133,7 @@ def text2sql(table, query_input):
130
  }
131
 
132
  # Load Databases Names
133
- databases = get_databases()
134
 
135
  # Custom CSS styling
136
  custom_css = """
@@ -164,7 +167,7 @@ with gr.Blocks(theme=gr.themes.Soft(primary_hue="purple", secondary_hue="indigo"
164
  with gr.Row():
165
 
166
  with gr.Column(scale=1, variant='panel'):
167
- database_dropdown = gr.Dropdown(choices=databases, label="Select Database", interactive=True)
168
  tables_dropdown = gr.Dropdown(choices=[], label="Available Tables", value=None)
169
 
170
  with gr.Column(scale=2):
@@ -185,7 +188,7 @@ with gr.Blocks(theme=gr.themes.Soft(primary_hue="purple", secondary_hue="indigo"
185
  with gr.Tab("Schema"):
186
  table_schema = gr.Textbox(lines=TAB_LINES, label="Table Schema", value="", interactive=False)
187
 
188
- database_dropdown.change(update_tables, inputs=database_dropdown, outputs=tables_dropdown)
189
  generate_query_button.click(text2sql, inputs=[tables_dropdown, query_input], outputs=[table_schema, input_prompt, generated_query, result_output])
190
 
191
  if __name__ == "__main__":
 
40
  print(f'Model Device: {model.device}')
41
 
42
  # Get Databases
43
+ def get_schemas():
44
+ schemas = conn.execute("""
45
+ SELECT DISTINCT schema_name
46
+ FROM information_schema.schemata
47
+ WHERE schema_name NOT IN ('information_schema', 'pg_catalog')
48
+ """).fetchall()
49
+ return [item[0] for item in schemas]
50
 
51
  # Get Tables
52
+ def get_tables(schema_name):
53
+ tables = conn.execute(f"SELECT table_name FROM information_schema.tables WHERE table_schema = '{schema_name}'").fetchall()
 
54
  return [table[0] for table in tables]
55
 
56
  # Update Tables
57
+ def update_tables(schema_name):
58
+ tables = get_tables(schema_name)
59
  return gr.update(choices=tables)
60
 
61
  # Get Schema
 
133
  }
134
 
135
  # Load Databases Names
136
+
137
 
138
  # Custom CSS styling
139
  custom_css = """
 
167
  with gr.Row():
168
 
169
  with gr.Column(scale=1, variant='panel'):
170
+ schema_dropdown = gr.Dropdown(choices=get_schemas(), label="Select Schema", interactive=True)
171
  tables_dropdown = gr.Dropdown(choices=[], label="Available Tables", value=None)
172
 
173
  with gr.Column(scale=2):
 
188
  with gr.Tab("Schema"):
189
  table_schema = gr.Textbox(lines=TAB_LINES, label="Table Schema", value="", interactive=False)
190
 
191
+ schema_dropdown.change(update_tables, inputs=schema_dropdown, outputs=tables_dropdown)
192
  generate_query_button.click(text2sql, inputs=[tables_dropdown, query_input], outputs=[table_schema, input_prompt, generated_query, result_output])
193
 
194
  if __name__ == "__main__":