Spaces:
Sleeping
Sleeping
Ari commited on
Update app.py
Browse files
app.py
CHANGED
|
@@ -35,9 +35,12 @@ data.to_sql(table_name, conn, index=False, if_exists='replace')
|
|
| 35 |
valid_columns = list(data.columns)
|
| 36 |
|
| 37 |
# Display the conversation thread
|
| 38 |
-
st.
|
| 39 |
for message in st.session_state.conversation:
|
| 40 |
-
|
|
|
|
|
|
|
|
|
|
| 41 |
|
| 42 |
# Step 3: Define SQL validation helpers
|
| 43 |
def validate_sql(query, valid_columns):
|
|
@@ -82,7 +85,6 @@ if user_prompt:
|
|
| 82 |
# Custom logic to return columns
|
| 83 |
columns_response = f"The columns are: {', '.join(valid_columns)}"
|
| 84 |
st.session_state.conversation.append(f"Bot: {columns_response}")
|
| 85 |
-
st.write(f"The columns are: {', '.join(valid_columns)}")
|
| 86 |
else:
|
| 87 |
# Generate SQL query based on user input
|
| 88 |
columns = ', '.join(valid_columns)
|
|
@@ -93,27 +95,24 @@ if user_prompt:
|
|
| 93 |
})
|
| 94 |
|
| 95 |
# Debug: Display generated SQL query for inspection
|
| 96 |
-
st.
|
| 97 |
|
| 98 |
# Step 7: Validate SQL query
|
| 99 |
if not validate_sql_with_sqlparse(generated_sql):
|
| 100 |
error_message = "Generated SQL is not valid."
|
| 101 |
st.session_state.conversation.append(f"Bot: {error_message}")
|
| 102 |
-
st.write(error_message)
|
| 103 |
elif not validate_sql(generated_sql, valid_columns)[0]:
|
| 104 |
invalid_column_message = "Generated SQL references invalid columns."
|
| 105 |
st.session_state.conversation.append(f"Bot: {invalid_column_message}")
|
| 106 |
-
st.write(invalid_column_message)
|
| 107 |
else:
|
| 108 |
# Step 8: Execute SQL query
|
| 109 |
result = pd.read_sql_query(generated_sql, conn)
|
| 110 |
-
st.
|
| 111 |
-
st.
|
| 112 |
-
|
| 113 |
except Exception as e:
|
| 114 |
logging.error(f"An error occurred: {e}")
|
| 115 |
error_message = f"Error: {e}"
|
| 116 |
st.session_state.conversation.append(f"Bot: {error_message}")
|
| 117 |
-
st.write(f"Error: {e}")
|
| 118 |
|
| 119 |
# Persist the conversation after each message
|
|
|
|
| 35 |
valid_columns = list(data.columns)
|
| 36 |
|
| 37 |
# Display the conversation thread
|
| 38 |
+
st.markdown("### Conversation Thread:")
|
| 39 |
for message in st.session_state.conversation:
|
| 40 |
+
if message.startswith("User:"):
|
| 41 |
+
st.markdown(f"<p style='color:blue'><strong>{message}</strong></p>", unsafe_allow_html=True)
|
| 42 |
+
else:
|
| 43 |
+
st.markdown(f"<p style='color:green'><strong>{message}</strong></p>", unsafe_allow_html=True)
|
| 44 |
|
| 45 |
# Step 3: Define SQL validation helpers
|
| 46 |
def validate_sql(query, valid_columns):
|
|
|
|
| 85 |
# Custom logic to return columns
|
| 86 |
columns_response = f"The columns are: {', '.join(valid_columns)}"
|
| 87 |
st.session_state.conversation.append(f"Bot: {columns_response}")
|
|
|
|
| 88 |
else:
|
| 89 |
# Generate SQL query based on user input
|
| 90 |
columns = ', '.join(valid_columns)
|
|
|
|
| 95 |
})
|
| 96 |
|
| 97 |
# Debug: Display generated SQL query for inspection
|
| 98 |
+
st.session_state.conversation.append(f"Bot: Generated SQL Query:\n{generated_sql}")
|
| 99 |
|
| 100 |
# Step 7: Validate SQL query
|
| 101 |
if not validate_sql_with_sqlparse(generated_sql):
|
| 102 |
error_message = "Generated SQL is not valid."
|
| 103 |
st.session_state.conversation.append(f"Bot: {error_message}")
|
|
|
|
| 104 |
elif not validate_sql(generated_sql, valid_columns)[0]:
|
| 105 |
invalid_column_message = "Generated SQL references invalid columns."
|
| 106 |
st.session_state.conversation.append(f"Bot: {invalid_column_message}")
|
|
|
|
| 107 |
else:
|
| 108 |
# Step 8: Execute SQL query
|
| 109 |
result = pd.read_sql_query(generated_sql, conn)
|
| 110 |
+
st.session_state.conversation.append("Bot: Here are the results of your query:")
|
| 111 |
+
st.session_state.conversation.append(result.to_string(index=False)) # Add query result as string
|
| 112 |
+
|
| 113 |
except Exception as e:
|
| 114 |
logging.error(f"An error occurred: {e}")
|
| 115 |
error_message = f"Error: {e}"
|
| 116 |
st.session_state.conversation.append(f"Bot: {error_message}")
|
|
|
|
| 117 |
|
| 118 |
# Persist the conversation after each message
|