Django动态切换数据库

时间:2012-03-28 13:08:26

标签: django

我想在用户登录时切换数据库。我已创建此登录信号..但它不起作用

from django.dispatch import receiver
from django.contrib.auth.signals import user_logged_in
from django.db import connections

@receiver(user_logged_in)
def db_switch(sender, **kwargs):
    user_db = 'userdb_%s' % kwargs['user'].username
    cursor = connections[user_db].cursor()

数据库在settings.py中定义。我必须将此游标设为全局吗?或者这一直是错误的做法吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

这是错误的做法。

老实说,我认为在Django中没有一种直接,稳定的方法。它不是为它设计的。

相反,我为每个用户设置了settings_ username。py文件,它指定了一个名为personal或者其他东西的辅助数据库。然后,在记录之后,让它们重定向到新域,例如username。example.com,它使用一个唯一的.wsgi文件来提取设置 username。py文件。< / p>

现在,就系统而言,每个网站对于该用户来说是完全独立和独特的。只需确保将会话cookie设置为example.com,以便他们在访问其用户网站时仍然登录。