You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查看部署在Heroku上的Flask Web应用的数据库内容

Heroku部署Flask应用后查询注册用户的常用方案

Heroku 底层 dyno 实例的文件系统是临时性的,每次实例重启、部署更新都会清空所有本地生成的文件。如果你上线后仍然使用本地SQLite存储用户数据,不仅历史注册数据大概率已经丢失,新注册的用户信息也会随时清空,建议优先切换为Heroku提供的托管数据库服务。


1. 仍使用本地SQLite的临时查询方案(极不推荐,仅适用于临时测试场景)

当前dyno运行期间新产生的SQLite数据可以通过以下方式临时查询:

  • 本地先安装Heroku CLI,终端执行heroku login登录你的Heroku账号
  • 执行heroku ps:exec -a 你的应用名进入当前运行的dyno的shell环境
  • 找到项目内SQLite文件的存放路径,用内置sqlite3工具直接执行查询,示例命令:sqlite3 your_database.sqlite "SELECT username,email,register_time FROM users;"
    注意:该方式只能查到当前dyno启动后新产生的数据,重启前的历史SQLite数据完全无法找回

2. 切换为Heroku托管数据库后的查询方案(推荐,生产环境必须使用)

切换为Heroku官方提供的Postgres等持久化托管数据库后,你可以用以下几种稳定方式查询用户名单:

  • 通过Heroku CLI直接操作数据库
    本地登录Heroku账号后,直接执行heroku pg:psql -a 你的应用名即可进入Postgres交互式命令行,执行SQL查询即可获取所有用户数据,示例查询语句:SELECT username, email, created_at FROM users ORDER BY created_at DESC;
  • 在Flask应用内新增私有管理路由
    可以写一个仅管理员账号可访问的路由,内部执行用户表查询逻辑,访问对应路径即可直接查看用户名单,示例逻辑参考:
    from flask_login import login_required, current_user
    from your_app import db
    from your_app.models import User
    
    @app.route('/admin/get-all-users')
    @login_required
    def get_all_users():
        # 提前给管理员账号加is_admin标识做权限校验
        if not current_user.is_admin:
            return "权限不足", 403
        all_users = User.query.all()
        return "<br>".join([f"用户名:{u.username} | 注册邮箱:{u.email} | 注册时间:{u.created_at}" for u in all_users])
    
    使用该方案务必做好权限校验,避免敏感用户信息泄露
  • 本地数据库客户端连接查询
    在Heroku应用后台的数据库配置页获取完整的数据库连接凭据,用本地的DBeaver、Navicat等数据库可视化客户端直接连接Heroku托管数据库,操作和本地数据库完全一致,可以可视化导出、查询所有用户数据。

内容的提问来源于stack exchange,提问作者vedant shinde

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 04:00:03