【发布时间】:2012-04-12 02:02:36
【问题描述】:
我想在用户登录时切换数据库。我已经创建了这个登录信号.. 但它不起作用
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 中定义。我必须使这个游标成为全球性的吗?或者这是完全错误的做法?
谢谢!
【问题讨论】:
-
嗯,听起来真的是 badddd 练习!为什么每个用户都应该有自己的数据库?
-
这是一个 SaaS 学习项目...单独的数据库是 SaaS 的一个好习惯...我找到了基于此的子域和数据库切换的示例...但我不需要那个我想根据用户切换数据库...
-
嗯...在我看到您的新评论之前发布了我的答案。子域是唯一的方法,因为您需要在请求开始时修改数据库,而不是在中间。我所看到的一切都表明,尝试在请求中更改全局设置是一件坏事。
-
谢谢乔丹,该死的我真的很想在没有子域的情况下这样做...我需要 5 个用户的顶部...
-
我不知道有任何 SaaS 为每个用户使用单独的数据库,但都在同一个域中......
标签: django