File size: 2,064 Bytes
151368f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import google.generativeai as genai #type:ignore
import streamlit as st
# importing for env variables loader
from dotenv import load_dotenv
import sqlite3
import os

load_dotenv()

# configure our api key
genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))


# function to load Model and provide sql query as response
def get_gemini_response(prompt, question):
    model = genai.GenerativeModel("gemini-1.5-flash")
    response = model.generate_content([prompt[0], question])
    return response.text


# function to retrieve query from the sql data base
def read_sql_query(sql, db):
    conn = sqlite3.connect(db)
    cur = conn.cursor()
    cur.execute(sql)
    rows = cur.fetchall()
    conn.commit()
    conn.close()
    for row in rows:
        print(row)
    return rows


# definning your prompt

prompt = [
    """
    You are an expert in converting English questions to SQL queries! 
    The SQL database has the name STUDENT and has the following columns - NAME, CLASS, 
    SECTION, and MARKS. 

    For Example:
    - Example 1: How many entries of records are present? 
      The SQL command will be: SELECT COUNT(*) FROM STUDENT;
    - Example 2: Tell me all the students studying in Data Science class? 
      The SQL command will be: SELECT * FROM STUDENT WHERE CLASS="Data Science";

    Provide the clean query that can be executed on the database without using any backticks or additional characters.
    The SQL command should not include any formatting characters or the word "SQL".
    """
]

# also the SQL code should not have ''' in biggining or end and sql word in output.

# streamlit app    
st.set_page_config(page_title="retrieve sql queryF")
st.header(" Gemini App to Retrieve SQL Data")

user_question = st.text_input("input:", key="input")

sumbit = st.button("ask the question")

if sumbit:
    sql_query = get_gemini_response(prompt,user_question)
    print(sql_query)
    data = read_sql_query(sql_query,"student.db")
    st.subheader("The resplonse is:")
    for row in data:
        print(row)
        st.write(row)