我的应用程序迎合了使用子域的多个客户,并为每个客户使用通用数据库进行基础架构管理和客户特定数据库。我正在使用python Flask
框架并使用flask-sqlalchemy
插件开发它。
对于单个客户方案,我可以使用配置中的两个sqlalchemy
绑定来处理此问题(一个用于客户数据库,一个用于管理数据库)。
但是当我添加多个客户时,我希望他们使用客户特定的配置来获得正确的客户端绑定数据库。对我而言,将客户数据保存在自己的数据库中以满足合规性要求非常重要。
我可以实现此功能的一种方法是部署与客户一样多的Web应用程序,但这不是可扩展的。
我探讨了使用blueprints
,但蓝图用于为每个蓝图提供不同的视图。对我来说,所有客户的观点都是一致的。我只是希望他们根据子域访问不同的数据库。此外,随着客户列表的增长,继续创建蓝图可能不是一个好主意。如何使用相同的视图和模型定义使用单个烧瓶应用程序实现此目的?
答案 0 :(得分:0)
您可以将一些代码放在用装饰器@app.before_request
包装的函数中,以检查用户是否经过身份验证,然后根据Flask的request.url
计算出正确的数据库,并将其存储在Flask的全局{{} 1}}对象。