# Load all environment variables import streamlit as st import os import sqlite3 import google.generativeai as genai # Configure GenAI Key genai.configure(api_key="AIzaSyA4jlt819TA84K9zr5EUroIQK83Rsx1A6E") # Use environment variable for API key # Function to load Google Gemini Model and provide queries as responses def get_gemini_response(question, prompt): try: model = genai.GenerativeModel('gemini-pro') response = model.generate_content([prompt[0], question]) return response.text.strip() # Ensure no extra whitespace except Exception as e: st.error(f"Error generating response: {e}") return "" # Function to retrieve query from the database def read_sql_query(sql, db): try: conn = sqlite3.connect(db) cur = conn.cursor() cur.execute(sql) rows = cur.fetchall() conn.close() return rows except sqlite3.Error as e: st.error(f"SQL error: {e}") return [] # Define your prompt prompt = [ """ You are an expert in converting English questions to SQL query! The SQL database has the name STUDENT and has the following columns - NAME, CLASS, SECTION. \n\nFor example,\nExample 1 - How many entries of records are present?, the SQL command will be something like this: SELECT COUNT(*) FROM STUDENT; \nExample 2 - Tell me all the students studying in Data Science class?, the SQL command will be something like this: SELECT * FROM STUDENT WHERE CLASS="Data Science"; Note: The SQL code should not have ``` in beginning or end, and should not include the word "sql". """ ] # Streamlit App st.set_page_config(page_title="SQL Query Retriever") st.header("Gemini App To Retrieve SQL Data") question = st.text_input("Input your question:", key="input") if st.button("Ask the question"): response = get_gemini_response(question, prompt) if response: st.write(f"Generated SQL Query: `{response}`") result = read_sql_query(response, "students.db") if result: st.subheader("Query Results") for row in result: st.write(row) else: st.write("No results returned or an error occurred.")