Streamlit黑科技!在线数据库客户端神器,SQL查询/多库支持/隐私安全一站式搞定(附源码+在线体验),于大爷.在线工具集

无需安装客户端,网页一键连数据库,支持MySQL/PostgreSQL/SQLServer/SQLite,查询导出全搞定!


在这里插入图片描述

一、你还在这样查数据库吗?

  • ❌ Navicat/HeidiSQL各种客户端切换,授权麻烦
  • ❌ 远程办公/临时查库,环境不支持,抓狂
  • ❌ 数据库账号暴露风险大,隐私无保障
  • ❌ 查询结果导出麻烦,格式不统一
  • ❌ 只想查个表还得装一堆依赖

二、拯救方案:在线数据库客户端 stSql

👉 在线体验地址:stSql数据库客户端(免登录直接用,支持手机/电脑)

所有工具入口都在 function/index.py,代码主入口:streamlit_app_test.py

2.1 支持数据库类型

  • 🗄️ SQLite(本地文件上传,自动识别表结构)
  • 🗄️ MySQL
  • 🗄️ PostgreSQL
  • 🗄️ SQL Server

2.2 主要功能

  • 🔒 安全连接,支持主流数据库
  • 📤 SQLite文件上传,自动检测表
  • 📝 SQL查询,自动加LIMIT防炸库
  • 📊 查询结果分页展示,一键导出
  • 🛡️ 严格安全校验,仅允许SELECT
  • 📱 响应式界面,手机/电脑都能用
  • 🧹 临时文件自动清理,隐私无忧

三、核心功能界面

  • 数据库类型选择:支持SQLite文件上传或远程数据库连接
  • 连接信息填写:主机、端口、用户名、密码、数据库名
  • 连接测试:一键检测连通性,错误友好提示
  • SQL查询:仅支持SELECT,自动加LIMIT/TOP,防止误操作
  • 结果分页:大表也不卡顿,支持导出
  • 隐私保护:上传文件仅临时处理,自动清理

四、核心代码展示(完整可用,直接集成Streamlit)

4.1 数据库类型选择与连接

import streamlit as st
import records
import sqlite3
import uuid, os, tempfile
from datetime import datetime

db_type = st.selectbox("选择数据库类型", ["SQLite", "PostgreSQL", "MySQL", "SQL Server"])
if db_type == "SQLite":
    uploaded_file = st.file_uploader("上传 SQLite 数据库文件", type=['db', 'sqlite', 'sqlite3'])
    if uploaded_file:
        temp_dir = os.path.join(tempfile.gettempdir(), 'streamlit_sql_app')
        os.makedirs(temp_dir, exist_ok=True)
        temp_path = os.path.join(temp_dir, f"sqlite_temp_{uuid.uuid4().hex}.db")
        with open(temp_path, 'wb') as f:
            f.write(uploaded_file.getvalue())
        conn = sqlite3.connect(temp_path)
        tables = conn.execute("SELECT name FROM sqlite_master WHERE type='table';").fetchall()
        st.write("数据库中的表:", ", ".join([t[0] for t in tables]))
        st.session_state.db_url = f"sqlite:///{temp_path}"
else:
    db_host = st.text_input("数据库主机:")
    db_port = st.number_input("数据库端口:", value=5432 if db_type=="PostgreSQL" else 3306)
    db_user = st.text_input("用户名:")
    db_password = st.text_input("密码:", type="password")
    db_name = st.text_input("数据库名称:")
    if st.button("测试数据库连通性"):
        db_url = f"postgresql://{db_user}:{db_password}@{db_host}:{db_port}/{db_name}" if db_type=="PostgreSQL" else ...
        db = records.Database(db_url)
        try:
            db.query("SELECT 1")
            st.success("数据库连接成功!")
            st.session_state.db_url = db_url
        except Exception as e:
            st.error(f"数据库连接失败:{e}")

4.2 SQL安全校验与查询执行

query = st.text_area("请输入 SQL 查询语句:")
def is_safe_query(query):
    q = query.lower().strip()
    for op in ['drop', 'delete', 'truncate', 'update', 'insert', 'alter', 'create', 'replace', 'exec', 'sp_', 'xp_', '--', '/*', '*/']:
        if op in q:
            return False, f"禁止执行包含 {op} 的操作"
    if not q.startswith('select'):
        return False, "仅允许 SELECT 查询"
    return True, ""
if st.button("执行查询"):
    safe, msg = is_safe_query(query)
    if not safe:
        st.error(msg)
    else:
        db = records.Database(st.session_state.db_url)
        # 自动加LIMIT
        if 'limit' not in query.lower():
            query += " LIMIT 100"
        rows = db.query(query, fetchall=True)
        if rows.all():
            df = rows.export('df')
            st.dataframe(df)
        else:
            st.info("查询执行成功,但没有返回数据")

4.3 查询结果分页与导出

if 'df' in locals():
    page_size = 10
    total_rows = len(df)
    total_pages = (total_rows + page_size - 1) // page_size
    page = st.selectbox('选择页码:', range(1, total_pages + 1))
    start_idx = (page - 1) * page_size
    end_idx = min(start_idx + page_size, total_rows)
    st.dataframe(df.iloc[start_idx:end_idx])
    st.write(f'显示 {start_idx + 1}{end_idx} 条,共 {total_rows} 条记录')
    st.download_button("导出为CSV", df.to_csv(index=False), file_name="query_result.csv")

五、使用流程一览

SQLite
MySQL/PostgreSQL/SQLServer
用户上传/配置数据库
选择数据库类型
上传SQLite文件
填写连接信息
自动检测表结构
测试连接
输入SQL查询
安全检查/自动加LIMIT
执行查询
分页展示结果
一键导出/复制

六、技术亮点

  1. 极致安全:仅允许SELECT,自动加LIMIT,防止误操作炸库
  2. 隐私保护:上传文件仅临时处理,自动清理,绝不留存
  3. 多库支持:MySQL/PostgreSQL/SQLServer/SQLite全兼容
  4. 极简体验:无需安装,网页即用,手机/电脑都能查
  5. 高效分页:大表数据分页展示,不卡顿
  6. 一键导出:查询结果一键导出CSV,方便二次分析

七、未来规划

  1. 🎯 支持SQL模板和历史查询记录
  2. 📊 支持结果可视化(图表/仪表盘)
  3. 🛡️ 增强权限管理和审计日志
  4. 💾 支持更多数据库类型(Oracle等)
  5. 📱 移动端体验持续优化

八、联系方式

  • 📧 邮箱:6686496@qq.com
  • 🌐 在线体验:https://www.yudaye.site/stSql
  • 🏠 工具主页:https://www.yudaye.site

如果你觉得这个工具对你有帮助,欢迎点赞收藏!也欢迎在评论区留言,分享你的使用体验和建议。

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐