【问题标题】:Flask: Different database backends for different subdomains?Flask:不同子域的不同数据库后端?
【发布时间】:2016-04-16 01:37:59
【问题描述】:

我的应用程序使用子域来满足多个客户的需求,并使用通用数据库进行基础架构管理,并为每个客户使用特定于客户的数据库。我正在使用 python Flask 框架和 flask-sqlalchemy 插件开发这个。

对于单个客户场景,我可以在配置中使用两个sqlalchemy 绑定来处理这个问题(一个用于客户数据库,一个用于内务数据库)。 但是当我添加多个客户时,我希望他们使用客户特定的配置来为客户绑定获取正确的数据库。对我来说,将客户数据保存在他们自己的数据库中以满足合规要求非常重要。

实现该功能的一种方法是部署与客户数量一样多的网络应用程序,但这是不可扩展的。

我使用blueprints 进行了探索,但使用蓝图时每个蓝图都有不同的视图。对我来说,所有客户的观点都是一样的。我只是希望他们根据子域访问不同的数据库。此外,随着客户列表的增长,继续创建蓝图可能不是一个好主意。如何使用相同的视图和模型定义通过单个烧瓶应用程序来实现这一点?

【问题讨论】:

    标签: flask flask-sqlalchemy


    【解决方案1】:

    您可以将一些代码放在使用装饰器@app.before_request 包装的函数中,以检查用户是否经过身份验证,然后根据 Flask 的 request.url 计算出正确的数据库并将其存储在 Flask 的全局 g 对象中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-21
      • 1970-01-01
      • 2016-09-14
      相关资源
      最近更新 更多