File size: 1,651 Bytes
20fcb23
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import pandas as pd
import gradio as gr

def generate_sql(file, operation, table_name):
    if file is None or not table_name:
        return "Please upload a CSV file and enter a table name."
    
    df = pd.read_csv(file.name)
    columns = df.columns.tolist()
    queries = []
    
    if operation == "ADD":
        for _, row in df.iterrows():
            values = tuple(row)
            query = f"INSERT INTO {table_name} ({', '.join(columns)}) VALUES {values};"
            queries.append(query)
    
    elif operation == "UPDATE":
        primary_key = columns[0]  # Assuming the first column is the primary key
        for _, row in df.iterrows():
            set_clause = ', '.join([f"{col}='{row[col]}'" for col in columns[1:]])
            query = f"UPDATE {table_name} SET {set_clause} WHERE {primary_key}='{row[primary_key]}';"
            queries.append(query)
    
    elif operation == "DELETE":
        primary_key = columns[0]
        for _, row in df.iterrows():
            query = f"DELETE FROM {table_name} WHERE {primary_key}='{row[primary_key]}';"
            queries.append(query)
    
    return "\n".join(queries)

iface = gr.Interface(
    fn=generate_sql,
    inputs=[
        gr.File(label="Upload CSV File"),
        gr.Radio(["ADD", "UPDATE", "DELETE"], label="Select Operation"),
        gr.Textbox(label="Enter Table Name")
    ],
    outputs=gr.Textbox(label="Generated SQL Queries"),
    title="CSV to SQL Query Converter",
    description="<div style='text-align: center; margin-top: 20px;'>© 2025 Sandaru Abeykoon. All rights reserved.</div>",

)

iface.launch()