栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python+Streamlit 100行代码实现数据管理系统-v1.0

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python+Streamlit 100行代码实现数据管理系统-v1.0

今天天气还是非常的不易出门,在家很闲,找点乐子,开发一个web在线数据库管理系统玩一玩。1.0版本暂时已完成,耗时3个小时,代码行数现100行左右,使用纯Python开发!

  1. 功能点规划:
  1. 支持常用db数据源:如MySQL、Oracle、postgres、Redis、mongodb、Hive、Hbase……
  2. 支持常用文件数据源:csv、parquet、excel……
  3. 支持表数据查询方式:SQL查询……
  4. 支持数据表展示方式:table表格、excel文件……
  1. UI 设计:

  1. 开发进度
  1. web页面布局已完成!
  2. MySQL数据已成功对接!
  1. 成果展示:视频发不了,只能以图片展示了!


  1. 代码展示与说明
  1. 导入相关Python库
import streamlit as st
import pymysql
import pandas as pd
import os
  1. 编写页面开发MySQL数据接入并展示功能

代码量很少,100行左右,不分所谓的前后端,使得交互没有阻碍!

col_a, col_b, col_c = st.columns([1, 3, 1])
with col_b:
    st.header('超级数据库管理系统 v1.0')

# 抽取全局参数
all_table = pd.Series(['default_table'])
table = 'default'
conn = ''
btn_flag = True

print('===============')

# 页面布局第一行两列
col1, col_block1, col2 = st.columns([1, 1, 3])
with col1:
    st.info('连接信息')
with col2:
    st.error('SQL查询窗口(暂未开发,等一等!)')

st.header('')

# 页面布局第二行四列
col20, col_block, col21, col22, col23 = st.columns([2, 1, 2, 1, 2])
with col20:
    db_type = st.selectbox(
        '数据库类型',
        ['MySQL', 'Postgres', 'Hive']
    )

    with st.expander('数据库参数'):
        host_name = st.text_input('Host', value='localhost')
        port = st.text_input('Port', value=3306)
        user_name = st.text_input('User', value='root')
        user_pass = st.text_input('Password', value='root')
        db_name = st.text_input('db', value='test')

    btn_flag = st.button('点击连接')
    if btn_flag:
        st.balloons()
        print('========数据库连接部分========')
        conn = pymysql.connect(
            host=host_name,
            user=user_name,
            password=user_pass,
            port=int(port),
            db=db_name,
            charset='utf8'
        )
        db_info = [host_name, port, user_name, user_pass, db_name]
        db_info_series = pd.Series(db_info)
        db_info_series.to_csv('db_info_series.csv')
        print(f'save db_info to csv success!')
        tables_sql = 'show tables'
        tables = pd.read_sql(tables_sql, conn)
        all_table = tables[tables.columns.values[0]]
        table = all_table[0]
        all_table.to_csv('all_table.csv')
        print(f'save all_table to csv success!')

with col21:
    st.success(f'表列表显示')
    print(f'======表下拉框部分========')
    if os.path.exists('all_table.csv'):
        c_tables = pd.read_csv('all_table.csv')
        all_table = c_tables[c_tables.columns.values[1]]
        table = all_table[0]
    if table in all_table.values:
        table = st.selectbox(
            '',
            all_table
        )

with st.expander(f'查看{table}元数据'):
    print(f'======元数据部分======')
    print(f'current_table:{table}')
    print(f'all_table:{all_table.values}')
    print(f'conn:{conn}')
    if os.path.exists('db_info_series.csv'):
        c_db_info = pd.read_csv('db_info_series.csv').values
        conn = pymysql.connect(
            host=c_db_info[0][1],
            user=c_db_info[2][1],
            password=c_db_info[3][1],
            port=int(c_db_info[1][1]),
            db=c_db_info[4][1],
            charset='utf8'
        )
        print(f'conn:{conn}')
    if table in all_table.values:
        schema_sql = f'desc {table}'
        schema_df = pd.read_sql(schema_sql, conn)
        st.table(schema_df[['Field', 'Type']])

with col23:
    st.success(f'{table}数据')
    print(f'======数据展示部分======')
    print(f'current_table:{table}')
    print(f'all_table:{all_table.values}')
    if table in all_table.values:
        query_sql = f'select * from {table}'
        query_df = pd.read_sql(query_sql, conn)
        st.table(query_df)
  1. 后续补充
  1. 完善页面,增加美观度
  2. 完善功能:
  • 增加其他常用数据库的对接,比如:postgress、Hive、hbase、redis、MongoDB……
  • 增加文本文件数据的对接,比如:csv,parquet,excel……
  • 增加在线SQL查询
  • 增加数据展示的方式,比如:直方图、折线图……
  • 优化性能
  • ……

整体没有难度,拿着当Python课设应该问题不大,嘿嘿!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/348469.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号