【问题标题】:Possible to refresh Django connections on the fly?可以即时刷新 Django 连接吗?
【发布时间】:2011-03-10 16:28:27
【问题描述】:

是否可以即时向 Django 添加新的数据库连接?

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

感谢您的宝贵时间。

【问题讨论】:

标签: database django reload on-the-fly


【解决方案1】:

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

使用这样的东西:

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

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

您需要克服的一个问题是,这段代码需要放置在某个地方,如果当前线程在尝试访问数据库之前总是会触及它。我使用中间件来实现这一点。

【讨论】:

  • 另外值得注意的是,确保您的数据库在结构上完全相同......因为这种技术绕过了 Django 数据库验证。
  • 真的不推荐,除非你对服务器和线程有绝对的控制权。
猜你喜欢
  • 2019-07-26
  • 2018-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-28
相关资源
最近更新 更多