from dotenv import load_dotenv import streamlit as st import os import sqlite3 import google.generativeai as genai # Configure API key genai.configure(api_key=os.getenv("GOOGLE_API_KEY")) def get_gemini_response(question, prompt): model = genai.GenerativeModel('gemini-pro') response = model.generate_content([prompt[0], question]) return response.text.strip() def read_sql_query(sql, db): conn = sqlite3.connect(db) cur = conn.cursor() cur.execute(sql) rows = cur.fetchall() conn.commit() conn.close() return rows # Prompt for the application 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"; """ ] # Streamlit app st.set_page_config(page_title="Text to SQL Query Converter") st.title("Text to SQL Query Converter") # User input question = st.text_input("Enter your question:", key="input") # Submit button if st.button("Convert to SQL Query"): if not question: st.error("Please enter a question.") else: # Generate SQL query from the question sql_query = get_gemini_response(question, prompt) st.write("SQL Query:") st.code(sql_query) # Execute the SQL query and display results try: results = read_sql_query(sql_query, "student.db") if results: st.success("Query executed successfully. Results:") st.table(results) else: st.warning("No results found.") except Exception as e: st.error(f"An error occurred: {e}")