【问题标题】:Dynamically select database based on request根据请求动态选择数据库
【发布时间】:2010-02-05 22:30:30
【问题描述】:

我试图让我的 RESTful 网站保持干燥,但我想不出一个好的方法来分解代码以从每个“用户”的单独数据库中动态选择。我们为每个客户提供了一个单独的数据库。这作为 URL 的一部分出现,并作为关键字 arg 传递到每个视图。我想为每个视图提供访问相应数据库的行为,而不必确保每个编写视图的程序员都记得使用

Thing.objects.using(user).all()

t = Thing()
t.save(using=user)

每次。似乎应该有某种方法来拦截请求并根据 args 将默认数据库设置为视图 它击中视图之前,允许我们使用通常的

Thing.objects.all()

这还具有将所有用户解析代码分解到更合适的位置的优势。

【问题讨论】:

    标签: python django


    【解决方案1】:

    我们通过以下技术做到这一点。

    1. Apache 选择路径的第一部分并将其路由到特定的 mod_wsgi 守护进程。

    2. 每个 mod_wsgi 守护程序都是不同客户的安装。

    我们有许多并行的客户,每个客户都有(几乎)相同的代码,都基于基本软件的单一通用安装。

    每个客户都有一个单独的settings.py,并具有其独特的配置。

    他们不(实际上不能)彼此了解,因为 Apache 已经为我们剥离了路径的顶层。

    【讨论】:

    • 这是我的建议。
    猜你喜欢
    • 2011-11-03
    • 2015-02-08
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    • 1970-01-01
    相关资源
    最近更新 更多