仅使用 Python 构建前端

WBOY
发布: 2024-08-29 06:34:02
原创
402 人浏览过

对于专注于后端的开发人员来说,前端开发可能是一项艰巨的、甚至是噩梦般的任务。在我职业生涯的早期,前端和后端之间的界限是模糊的,每个人都被期望能够处理这两者。 CSS,尤其是,是一场持续不断的斗争;这感觉就像是一个不可能完成的任务。

虽然我喜欢前端工作,但 CSS 对我来说仍然是一个复杂的挑战,特别是因为我是通过反复试验才学会它的。 Peter Griffin 努力打开百叶窗的表情包完美地体现了我学习 CSS 的经历。
Building a frontend using only Python

但是今天,一切都变了。像 Streamlit 这样的工具已经为像我这样喜欢舒适的终端黑屏的开发者带来了彻底的游戏变革。与看起来像是来自外星人的神秘消息的代码行搏斗的日子已经一去不复返了(看着你,CSS!)。
正如《两分钟论文》中的 Károly Zsolnai-Fehér 博士经常说的那样:“活着真是太美好了!”
借助 Streamlit,您可以仅使用 Python 代码构建整个 Web 应用程序。
想看看它的实际效果吗?系好安全带,因为我即将分享我使用这个很棒的工具为 SQLZilla 创建前端的尝试。

要安装它,只需打开你的终端并施放这个咒语:

pip install streamlit
登录后复制

(或者您可以将其添加到您的requirements.txt 文件中。)

创建文件 app.py 并添加以下代码片段以显示“SQLZilla”标题:

import streamlit as st

st.title("SQLZilla")
登录后复制

主持节目!

再次打开终端并输入以下命令来激活您的创建:

streamlit run app.py
登录后复制

瞧!您的 Streamlit 应用程序应该出现在您的 Web 浏览器中,并自豪地显示标题“SQLZilla”。

使用图像方法添加图像,为了将其集中,我只需创建 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 来显示查询结果。以下是如何在 Streamlit 应用程序中显示 DataFrame 的示例:

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 中,我添加了一个名为 Streamlit-code-editor 的 ACE 代码编辑器版本:

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,请投票给这个将文本转换为查询的令人难以置信的助手!

以上是仅使用 Python 构建前端的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板