Разработка внешнего интерфейса может оказаться сложной и даже кошмарной задачей для разработчиков, ориентированных на серверную часть. В начале моей карьеры границы между фронтендом и бэкендом были размыты, и каждый должен был заниматься и тем, и другим. CSS, в частности, представлял собой постоянную борьбу; это казалось невыполнимой миссией.
Хотя мне нравится работать с интерфейсом, CSS остается для меня сложной задачей, тем более что я изучал его методом проб и ошибок. Мем с Питером Гриффином, пытающимся открыть жалюзи, прекрасно отражает мой опыт изучения CSS.
Но сегодня все меняется. Такие инструменты, как Streamlit, произвели революцию в игре для таких разработчиков, как я, которые предпочитают комфорт черного экрана терминала. Прошли времена борьбы со строками кода, которые выглядели как загадочные сообщения от инопланетян (глядя на тебя, CSS!).
Как всегда говорит доктор Карой Жолнаи-Фехер из «Двухминутных газет»: «Какое время быть живым!»
С помощью Streamlit вы можете создать целое веб-приложение, используя только код Python.
Хотите увидеть это в действии? Пристегнитесь, потому что я собираюсь поделиться своей попыткой создания интерфейса для SQLZilla с помощью этого замечательного инструмента.
Чтобы установить его, просто откройте терминал и произнесите это заклинание:
pip install streamlit
(Или вы можете добавить его в файл require.txt.)
Создайте файл app.py и добавьте этот фрагмент кода для отображения заголовка «SQLZilla»:
import streamlit as st st.title("SQLZilla")
Управляйте шоу!
Снова откройте терминал и введите эту команду, чтобы активировать свое творение:
streamlit run app.py
Вуаля! Ваше приложение Streamlit должно появиться в вашем веб-браузере с гордым названием «SQLZilla».
Добавьте изображение, используя метод image. Чтобы централизовать его, я просто создаю 3 столбца и добавляю их по центру (стыдно мне)
st.title("SQLZilla") left_co, cent_co, last_co = st.columns(3) with cent_co: st.image("small_logo.png", use_column_width=True)
Для управления конфигурациями и результатами запросов вы можете использовать состояние сеанса. Вот как вы можете сохранить значения конфигурации и результаты запроса:
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
Чтобы подключить SQLZilla к базе данных InterSystems IRIS, вы можете использовать SQLAlchemy. Сначала установите SQLAlchemy с помощью:
pip install sqlalchemy
Затем настройте соединение в файле app.py:
from sqlalchemy import create_engine import pandas as pd # Replace with your own connection details 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
После подключения к базе данных вы можете использовать Pandas и Streamlit для отображения результатов ваших запросов. Вот пример того, как отобразить DataFrame в вашем приложении Streamlit:
if 'query' in st.session_state: query = st.session_state.query df = run_query(query) st.dataframe(df)
Чтобы сделать ваше приложение более интерактивным, вы можете использовать st.rerun() для обновления приложения при каждом изменении запроса:
if 'query' in st.session_state and st.button('Run Query'): df = run_query(st.session_state.query) st.dataframe(df) st.rerun()
Вы можете найти различные компоненты Streamlit для использования. В SQLZilla я добавил версию редактора кода ACE под названием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']
Поскольку помощник SQLZilla написан на Python, я просто вызвал класс:
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
Поздравляем! Вы создали свою собственную SQLZilla. Продолжайте изучать Streamlit и расширяйте возможности своего приложения. А если вам нравится SQLZilla, проголосуйте за этого невероятного помощника, преобразующего текст в запросы!
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3