Artigo
· Ago. 6 4min de leitura

Construindo um frontend usando apenas Python

Desenvolvimento de frontend pode ser uma tarefa muito difícil, especialmente para desenvolvedores focados em backend. Mais cedo na minha carreira, as linhas entre frontend e backend eram borradas, e se experava de todos que conseguissem manejar ambos. CSS em particular era um desafio constante, parecia uma missão impossível.

Apesar de eu aproveitar trabalho de frontend, CSS ainda é um desafio complexo para mim, especialmente porque aprendi por tentativa e erro. O meme do Peter Griffin com dificuldade para abrir persianas captura perfeitamente minha experiência aprendendo CSS
Peter Griffin CSS

Porém, hoje, tudo vai mudar. Ferramentas como o Streamlit revolucionaram o jogo para desenvolvedores como eu, que preferem o conforto de uma tela preta do terminal. Foram-se os dias de luta com linhas de código que parecem mensagens criptografadas de alienígenas (estou olhando para você, CSS!).
Como o Doctor Károly Zsolnai-Fehér, de Two Minute Papers, sempre diz, "que momento para estar vivo!".
Com Streamlit, você pode construir uma aplicação web inteira somente usando código Python.
Quer ver isso em ação? Prepare-se, porque eu estou prestes a mostrar minha tentativa de criar um frontend para o SQLZilla com essa ferramenta incrível.

Para instalar, simplesmente abra seu terminal e lance esse feitiço:

pip install streamlit

(Ou você pode adicionar isso no seu arquivo requirements.txt.)

Crie um arquivo, app.py e adicione esse code snippet para exibir um tíitulo "SQLZilla":

import streamlit as st

st.title("SQLZilla")

Rode o Show!

Abra seu terminal de novo e digite este comando para ativar sua criação:

streamlit run app.py

Voila!Seu app Streamlit deve aparecer no seu browser, orgulhosamente exibindo o título "SQLZilla."

Adicione um a imagem usando o método image. Para centralizá-la eu só criei 3 colunas e adicionei ela no centro (que vergonha!)

   st.title("SQLZilla")

   left_co, cent_co, last_co = st.columns(3)
   with cent_co:
       st.image("small_logo.png", use_column_width=True)

Para administrar configurações e resultados de queries, você pode usar session_state. Aqui está uma forma de salvar os valores de configuração e guardar resultados de queries:

if 'hostname' not in st.session_state:
    st.session_state.hostname = 'sqlzilla-iris-1'
if 'user' not in st.session_state:
    st.session_state.user = '_system'
if 'pwd' not in st.session_state:
    st.session_state.pwd = 'SYS'
# Add other session states as needed

Para conectar o SQLZilla a uma base de dados InterSystems, você pode usar SQLAlchemy. Primeiro, instale SQLAlchemy com:

pip install sqlalchemy

Então, configure a conexão no seu arquivo app.py:

from sqlalchemy import create_engine
import pandas as pd

# Substitua com os detalhes da sua conexão
engine = create_engine(f"iris://{user}:{password}@{host}:{port}/{namespace}")

def run_query(query):
    with engine.connect() as connection:
        result = pd.read_sql(query, connection)
        return result

Uma vez conectado na base de dados, você pode usar Pandas e Streamlit para exibir os resultados de suas queries. Aqui está um exemplo de como exibir um DataFrame no seu app Streamlit:

if 'query' in st.session_state:
    query = st.session_state.query
    df = run_query(query)
    st.dataframe(df)

Para deixar seu app mais interativo, você pode usar st.rerun()para atualizar o aplicativo sempre que a query mudar:

if 'query' in st.session_state and st.button('Run Query'):
    df = run_query(st.session_state.query)
    st.dataframe(df)
    st.rerun()

VocÇe pode encontrar vários componentes Streamlit para usar. No SQLZilla, eu adicionei o editor de código ACE na versão chamada streamlit-code-editor:

from code_editor import code_editor

editor_dict = code_editor(st.session_state.code_text, lang="sql", height=[10, 100], shortcuts="vscode")

if len(editor_dict['text']) != 0:
    st.session_state.code_text = editor_dict['text']

Já que o assistente SQLZilla é escrito em Python, eu só chamei a classe:

from sqlzilla import SQLZilla

def assistant_interaction(sqlzilla, prompt):
    response = sqlzilla.prompt(prompt)
    st.session_state.chat_history.append({"role": "user", "content": prompt})
    st.session_state.chat_history.append({"role": "assistant", "content": response})

    if "SELECT" in response.upper():
        st.session_state.query = response

    return response

Parabéns! Você construiu seu próprio SQLZilla. Continue explorando o Streamlit e melhore seu app com mais recursos. E se gostar do SQLZilla, vote por esse assistente incrível que converte seus textos em queries!

Discussão (0)1
Entre ou crie uma conta para continuar