可以动态刷新Django连接吗?

时间:2010-07-01 14:41:51

标签: database django reload on-the-fly

是否可以动态添加新的数据库连接到Django?

我有一个使用多个数据库的应用程序(django 1.2.1),并且在运行时,允许创建新数据库。我需要立即使用这个新数据库(django.db.connections[db_alias])。没有服务器重启可以吗?在这里和那里使用模块reload

感谢您的时间。

1 个答案:

答案 0 :(得分:3)

有可能......但不推荐...... 您可以访问当前的连接处理程序...

使用类似的东西:

from django.db import connections
if not alias in connections.databases:
    connections.databases[alias] = connections.databases['default']  # Copy 'default'
    connections.databases[alias]['NAME'] = alias              

当前线程上存在任何数据库活动时,请确保不要尝试向数据库字典添加新别名。

您需要克服的一个问题是,在尝试访问数据库之前,如果当前线程始终触及此代码,则需要将此代码放在某处。我使用中间件来实现这一目标。