Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -27,11 +27,11 @@ class SQLPromptModel:
|
|
27 |
schema = cursor.fetchall()
|
28 |
if schema:
|
29 |
return schema
|
30 |
-
else
|
31 |
return None
|
32 |
#return schema if schema else None
|
33 |
|
34 |
-
def text2sql_gemini(self, schema,
|
35 |
# Convert table columns to string format
|
36 |
table_columns = ', '.join([f"{col[1]} {col[2]}" for col in schema])
|
37 |
#col[1] - column name/index
|
@@ -40,13 +40,13 @@ class SQLPromptModel:
|
|
40 |
# Create prompt for Gemini AI
|
41 |
prompt = f"""Below are SQL table schemas paired with instructions that describe a task.
|
42 |
Using valid SQLite, write a response that appropriately completes the request for the provided tables.
|
43 |
-
### Instruction: {
|
44 |
Input: CREATE TABLE sql_pdf({table_columns});
|
45 |
-
### Response: (Return only generated query based on
|
46 |
|
47 |
# Replace default prompt with user input if provided
|
48 |
-
if
|
49 |
-
prompt = prompt.replace(
|
50 |
|
51 |
# Get SQL query from Gemini
|
52 |
completion = genai_model.generate_content(prompt)
|
@@ -72,13 +72,13 @@ class SQLPromptModel:
|
|
72 |
self.conn.commit()
|
73 |
return rows, columns
|
74 |
|
75 |
-
def execute_sql_query(
|
76 |
# Database file path
|
77 |
database = r"sql_pdf.db"
|
78 |
sql_model = SQLPromptModel(database)
|
79 |
|
80 |
# Default prompt if none provided
|
81 |
-
|
82 |
|
83 |
# Try operation up to 3 times
|
84 |
for _ in range(3):
|
@@ -87,10 +87,10 @@ def execute_sql_query(input_prompt):
|
|
87 |
table_schema = sql_model.fetch_table_schema("sql_pdf")
|
88 |
if table_schema:
|
89 |
# Generate and execute query
|
90 |
-
if
|
91 |
-
query = sql_model.text2sql_gemini(table_schema,
|
92 |
else:
|
93 |
-
query = sql_model.text2sql_gemini(table_schema,
|
94 |
|
95 |
rows, columns = sql_model.execute_query(query)
|
96 |
# Return formatted results
|
|
|
27 |
schema = cursor.fetchall()
|
28 |
if schema:
|
29 |
return schema
|
30 |
+
else
|
31 |
return None
|
32 |
#return schema if schema else None
|
33 |
|
34 |
+
def text2sql_gemini(self, schema, def_query, user_query=None):
|
35 |
# Convert table columns to string format
|
36 |
table_columns = ', '.join([f"{col[1]} {col[2]}" for col in schema])
|
37 |
#col[1] - column name/index
|
|
|
40 |
# Create prompt for Gemini AI
|
41 |
prompt = f"""Below are SQL table schemas paired with instructions that describe a task.
|
42 |
Using valid SQLite, write a response that appropriately completes the request for the provided tables.
|
43 |
+
### Instruction: {def_query} ###
|
44 |
Input: CREATE TABLE sql_pdf({table_columns});
|
45 |
+
### Response: (Return only generated query based on def_query , nothing extra)"""
|
46 |
|
47 |
# Replace default prompt with user input if provided
|
48 |
+
if user_query is not None:
|
49 |
+
prompt = prompt.replace(def_query, user_query + " ")
|
50 |
|
51 |
# Get SQL query from Gemini
|
52 |
completion = genai_model.generate_content(prompt)
|
|
|
72 |
self.conn.commit()
|
73 |
return rows, columns
|
74 |
|
75 |
+
def execute_sql_query(user_query):
|
76 |
# Database file path
|
77 |
database = r"sql_pdf.db"
|
78 |
sql_model = SQLPromptModel(database)
|
79 |
|
80 |
# Default prompt if none provided
|
81 |
+
def_query = "Give complete details of properties in India"
|
82 |
|
83 |
# Try operation up to 3 times
|
84 |
for _ in range(3):
|
|
|
87 |
table_schema = sql_model.fetch_table_schema("sql_pdf")
|
88 |
if table_schema:
|
89 |
# Generate and execute query
|
90 |
+
if user_query.strip():
|
91 |
+
query = sql_model.text2sql_gemini(table_schema, def_query, user_query)
|
92 |
else:
|
93 |
+
query = sql_model.text2sql_gemini(table_schema, def_query, def_query)
|
94 |
|
95 |
rows, columns = sql_model.execute_query(query)
|
96 |
# Return formatted results
|