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
|