暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

好马配好鞍,Python写前端

Python都知道 2022-09-28
490


好马需配好鞍

哈喽,大家好,我是知道!

Python语言简单,学习容易,作为开发者哪怕不从事Python相关的工作,也可以学习一下Python以备不时之需。Python拥有庞大的外部库,非常适合平时开发一些常用的小工具,尤其是一些重复性文件或者数据操作,人工费时费力,而用Python脚本则只需轻轻一敲一键生成,真乃开发者的良车是也。

平时开发完小工具,每次使用都需要敲代码,这就很不优雅了,有同样困扰的还有Java,不过好在Python有强大的外部库,今天就以一个数据导入的小工具,来介绍下Python的前端框架。

Python写前端

今天写前端的主角是一个 Python 库 Streamlit,本身streamlit是给做机器学习的人开发的,作为一个实时的数据展示和输出工具,但是它也具有一些交互功能的Form表单、按钮、单选框、复选框等功能后,借助这些特性,可以快速开发一个小型网页。

1.首先安装库

pip3 install streamlit

复制

使用的时候直接Import即可,这里还用自带的登录功能和菜单功能

import streamlit as st
import streamlit_authenticator as stauth
from streamlit_option_menu import option_menu

复制

2.先写个登录界面练练手

虽然只是个小工具,但有个登录功能也是锦上添花,

st.set_page_config(page_title="Platform tester", page_icon=":rainbow:", layout="wide", initial_sidebar_state="auto")
# 如下代码数据,可以来自数据库
names = ['Platform_Tester']
usernames = ['tester']
passwords = ['tester']
hashed_passwords = stauth.Hasher(passwords).generate()
authenticator = stauth.Authenticate(names, usernames, hashed_passwords, 'some_cookie_name''some_signature_key', cookie_expiry_days=7)
name, authentication_status, username = authenticator.login('Login''main')

复制

这里把用户名和密码都设置成“tester”,页面的名称设置成“Platform_Tester”,我们来看下效果

这么几句简单的代码,一个登录页面就完成了,是不是非常容易。

3.制作菜单做好功能分类

我们设置一个左侧菜单,可以导入不同的数据库,如:hive、kudu、mysql

choice = option_menu("Tester Tools", ["首页""HIVE""KUDU""MYSQL"], icons=['house''chat-square''chat-square-dots''chat-square-text'], menu_icon="hammer", default_index=0)

复制

4.Hive导入页面详细表单

以hive导入为例说几个常用的form表单组件

可以给页面设置一个标题:Streamlit App -- Hive

st.title('Streamlit App -- Hive')

复制

首先选择数据库环境,使用单选radio按钮,内容选择测试库:TEST,通过选择的数据库,可以获取一些当前环境的IP、端口、用户名、密码等信息

ENV = st.radio('ENV Config', ['TEST'], index=0)
host = Get_ENV(ENV).get_ENV_hive()[0]
port = Get_ENV(ENV).get_ENV_hive()[1]
auth_mechanism = Get_ENV(ENV).get_ENV_hive()[2]
user = Get_ENV(ENV).get_ENV_hive()[3]
password = Get_ENV(ENV).get_ENV_hive()[4]
database = Get_ENV(ENV).get_ENV_hive()[5]

复制

然后连接数据库,获取database列表,显示到selectbox中进行选择

DATABASES_LIST = Connect_Hive(host, port, auth_mechanism, user, password, database).get_databases_list()[0]
database = st.selectbox('DataBases List', DATABASES_LIST, index=index)

复制

接下来列出数据库中的表,显示到selectbox中进行选择,确定要导入数据的目标表

TABLES_LIST = Connect_Hive(host, port, auth_mechanism, user, password, database).get_tables_list()
table = st.selectbox('Tables List', TABLES_LIST)

复制

最后放一个文件上传file_uploader,把导入的数据文件上传,具体格式可以自己定义,加一个提交按钮执行导入操作

input_file = st.file_uploader("Upload a CSV File", type=['csv'], key="upload")
st.button('提交', key='Sub_Button', disabled=True)

复制

我们来看一下效果

可以看到一个数据联动+表单提交的小页面就制作完成了,以后想导入数据就可以完全页面化操作,而不用去先去数据库工具里把所有信息查询好再用命令行操作,而且这个工具也可以推广出去,给一些非开发人员使用。

总结

今天只是介绍了Python库Streamlit去写前端页面,其实Python的前端框架还有很多,比如:Django、Flask等,大家可以根据自己要使用的场景去选择。

PSPython都知道技术交流群(技术交流、摸鱼、白嫖课程为主)又不定时开放了,感兴趣的朋友,可以在下方公号内回复:666,即可进入。


老规矩,道友们还记得么,右下角的 “在看” 点一下如果感觉文章内容不错的话,记得分享朋友圈让更多的人知道!



文章转载自Python都知道,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论