sqlgptapp / app.py
qunfei's picture
remove into place holder
7fd53e3
from io import StringIO
import streamlit as st
import os
from loguru import logger
from client import OpenAIService, SQLService, FacebookLLAMAService, GoogleT5Service
st.set_page_config(
page_title=' A SQL Generative Pre-trained Transformer',
layout='wide',
initial_sidebar_state='expanded'
)
databases = ['Oracle', 'SQLServer', 'MySQL', 'DB2', 'PostgreSQL', 'Snowflake', 'Redshift']
models = ['openai-text-david-003', 'google-t5', 'facebook-llama']
# -------------
st.sidebar.header('πŸŽƒ A SQL Transformer for Migration')
model = st.sidebar.selectbox(label='Model', options=models, index=0)
openai_key = os.environ.get("OPEN-KEY", None)
source_database = st.sidebar.selectbox(
label='πŸ“• Source Database',
options=databases,
index=0
)
target_database = st.sidebar.selectbox(
label='πŸ“—Target Database',
options=databases,
index=4
)
input_text = st.sidebar.text_area(
label='πŸ“‹ Insert SQL',
height=200,
placeholder='select id from customer where rownum <= 100'
)
input_file = st.sidebar.file_uploader(
label=" πŸ“„ Choose a SQL file",
accept_multiple_files=False)
def transform():
client: SQLService = None
if model == "openai-text-david-003":
client = OpenAIService(openai_key)
elif model == "google-t5":
client = GoogleT5Service()
elif model == "facebook-llama":
client = FacebookLLAMAService()
logger.info(f"Using Model:{model}")
code = input_text
source = source_database
target = target_database
if code:
solutions = client.translate(source, target, code)
st.code(solutions[0], language='sql')
else:
if input_file is not None:
# To convert to a string based IO:
stringio = StringIO(input_file.getvalue().decode("utf-8"))
# To read file as string:
sql = stringio.read()
solutions = client.translate(source, target, sql)
st.code(solutions[0], language='sql')
# ---------------------------------------
transform()