1
1
import re
2
- import requests
3
2
import logging
3
+ from dotenv import load_dotenv
4
+ import os
5
+ import google .generativeai as genai
6
+
7
+ load_dotenv ()
8
+
4
9
5
10
logging .basicConfig (level = logging .NOTSET )
6
11
12
+ genai .configure (api_key = os .environ ['GEMINI_API_KEY' ])
13
+ model = genai .GenerativeModel ('gemini-pro' )
14
+
7
15
8
16
def extract_table_columns (sql_content ):
9
17
create_table_pattern = re .compile (
@@ -50,7 +58,15 @@ def generate_insert_statements(table_columns):
50
58
f"INSERT INTO { table_name } ({ ', ' .join (columns )} ) VALUES ({ values_placeholder } );" )
51
59
52
60
53
- def generate_insert_statement_from_ai (sql_content ):
61
+ def extract_inserts (response ):
62
+ sql_pattern = re .compile (r'```sql(.*?)```' , re .DOTALL )
63
+ sql_matches = sql_pattern .findall (response )
64
+ return sql_matches
65
+
66
+
67
+ def generate_insert_statement_from_ai (sql_content : str ):
68
+ if not sql_content .lower ().startswith ('create table' ):
69
+ return
54
70
logging .info (f"Generating INSERT Statements for table { sql_content } " )
55
71
prompt = (
56
72
f"Generate me random fake data for the following tables:"
@@ -61,10 +77,25 @@ def generate_insert_statement_from_ai(sql_content):
61
77
f"Values (...)"
62
78
f"(...)"
63
79
f"Make 10 statements"
80
+ f"Note that bigserial is a number. Each row table has an id."
64
81
)
65
- res = requests .get (f"https://api.freegpt4.ddns.net/?text={ prompt } " )
66
- print (res )
67
- print (res .text )
82
+
83
+ response = model .generate_content (prompt )
84
+ sql_inserts = ""
85
+ try :
86
+ sql_inserts = extract_inserts (response .text )
87
+ except :
88
+ print ("EXCEPTTTT....." )
89
+ print (response )
90
+ sql_inserts = extract_inserts (
91
+ response .candidates [0 ].content .parts )
92
+
93
+ # Write the extracted SQL statements to a file
94
+ output_file_path = 'extracted_sql_statements.sql'
95
+ with open (output_file_path , 'a' ) as output_file :
96
+ for sql_statement in sql_inserts :
97
+ output_file .write (sql_statement .strip ())
98
+
68
99
return ''
69
100
70
101
@@ -73,23 +104,4 @@ def generate_insert_statement_from_ai(sql_content):
73
104
sql_content = []
74
105
with open (file_path , 'r' ) as sql_file :
75
106
for line in sql_file :
76
- sql_content .append (line )
77
- print (sql_content )
78
-
79
- insert_statement = generate_insert_statement_from_ai (sql_content )
80
-
81
- # sql_content = """
82
- # create table "address" (
83
- # "customer_id" bigint,
84
- # "id" bigint not null,
85
- # "address_line" varchar(255),
86
- # "city" varchar(255),
87
- # "coordinates" varchar(255),
88
- # "country" varchar(255),
89
- # "postal_code" varchar(255),
90
- # "street_number" varchar(255),
91
- # "unit_number" varchar(255),
92
- # primary key ("id"),
93
- # foreign key ("customer_id") references "customer"
94
- # );
95
- # """
107
+ generate_insert_statement_from_ai (line )
0 commit comments