Streamlit黑科技!在线数据库客户端神器,SQL查询/多库支持/隐私安全一站式搞定(附源码+在线体验),于大爷.在线工具集
摘要(150字) Streamlit开发的在线数据库客户端stSql,支持MySQL/PostgreSQL/SQLServer/SQLite,无需安装客户端即可网页操作。核心功能包括: 1️⃣ 安全连接与SQLite文件自动解析; 2️⃣ 智能SQL查询(仅允许SELECT,自动加LIMIT防误操作); 3️⃣ 结果分页展示与CSV导出; 4️⃣ 严格隐私保护(临时文件自动清理)。技术亮点为多库兼
·
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")
五、使用流程一览
六、技术亮点
- 极致安全:仅允许SELECT,自动加LIMIT,防止误操作炸库
- 隐私保护:上传文件仅临时处理,自动清理,绝不留存
- 多库支持:MySQL/PostgreSQL/SQLServer/SQLite全兼容
- 极简体验:无需安装,网页即用,手机/电脑都能查
- 高效分页:大表数据分页展示,不卡顿
- 一键导出:查询结果一键导出CSV,方便二次分析
七、未来规划
- 🎯 支持SQL模板和历史查询记录
- 📊 支持结果可视化(图表/仪表盘)
- 🛡️ 增强权限管理和审计日志
- 💾 支持更多数据库类型(Oracle等)
- 📱 移动端体验持续优化
八、联系方式
- 📧 邮箱:6686496@qq.com
- 🌐 在线体验:https://www.yudaye.site/stSql
- 🏠 工具主页:https://www.yudaye.site
如果你觉得这个工具对你有帮助,欢迎点赞收藏!也欢迎在评论区留言,分享你的使用体验和建议。

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