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

Flask不同路由间存储对象、变量和列表的轻量实现方案咨询

针对Flask跨路由数据存储问题的解决方案

问题1:实现跨路由对象/列表持久化的最简方案

不用数据库的前提下,最低改造成本的方案是使用flask-session将session存储在服务端,完全适配你当前的轻量需求:

  • 默认Flask的session是存在客户端Cookie中,容量小且不安全,flask-session会把session内容存储在服务端,客户端仅留存一个无意义的session_id标识,完美解决大对象存储和跨路由访问问题
  • 仅需要几行代码即可完成配置:
from flask import Flask, session
from flask_session import Session
import tempfile

app = Flask(__name__)
# 配置session存储到本地临时文件
app.config["SESSION_PERMANENT"] = False
app.config["SESSION_TYPE"] = "filesystem"
app.config["SESSION_FILE_DIR"] = tempfile.gettempdir() # 存在系统临时目录,自动清理过期内容
app.secret_key = "自定义随机加密字符串"
Session(app)
  • 后续计算生成的帕累托投资组合对象、列表可以直接存入session,例如session['user_portfolios'] = 计算结果,所有路由都可以直接读写,不同用户的session天然隔离,不会出现数据混淆,且完全不需要修改现有业务逻辑
  • 该方案完全可以支撑50个用户同时使用的并发需求,无明显性能瓶颈

问题2:使用数据库的最优处理逻辑

如果需要长期留存数据、支持更复杂的查询操作,优先选择SQLite作为数据库,不需要额外部署数据库服务,单文件存储,是轻量场景的最优选择:

核心实现逻辑

  1. 无需用户登录,直接用用户的session_id作为唯一标识区分不同用户的数据,所有用户生成的数据都关联自己的session_id即可
  2. 推荐搭配flask-sqlalchemy做ORM封装,不需要编写原生SQL,开发效率更高:
    首先安装依赖:pip install flask-sqlalchemy
    配置和建表示例:
from flask_sqlalchemy import SQLAlchemy

app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///portfolios.db"
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
db = SQLAlchemy(app)

# 投资组合数据表
class Portfolio(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    sid = db.Column(db.String(255), nullable=False, index=True) # 存储用户session_id,用于用户区分
    params = db.Column(db.JSON, nullable=False) # 存储用户提交的表单参数
    result = db.Column(db.JSON, nullable=False) # 存储计算生成的投资组合结果,列表对象可直接转JSON存储
    create_time = db.Column(db.DateTime, server_default=db.func.now())

# 首次启动前执行一次建表操作
with app.app_context():
    db.create_all()
  1. 读写逻辑:
  • 计算完成后存数据:创建Portfolio实例,填入对应字段后执行db.session.add(实例)、db.session.commit()即可
  • 其他路由查询当前用户数据:user_data = Portfolio.query.filter_by(sid=session.sid).order_by(Portfolio.create_time.desc()).all(),只会返回当前用户的历史数据,不会和其他用户混淆
  1. 该方案不需要额外部署服务,支撑50并发无压力,后续如果要新增用户登录功能,只需要新增user_id字段关联即可,扩展性良好

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 13:45:08