可以动态刷新 Django 连接吗?

发布于 2024-09-08 01:00:25 字数 202 浏览 8 评论 0原文

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

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

感谢您抽出时间。

Is it possible to add a new database connection to Django on the fly?

I have an application that uses multiple databases (django 1.2.1), and while running, it's allowed to create new databases. I'd need to use this new database right away (django.db.connections[db_alias]). Is it possible without server restart? Using module reload here and there?

Thank you for your time.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

森末i 2024-09-15 01:00:25

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

使用类似以下内容:

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

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

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

It is possible... but not recommended...
You can access the current connection handler...

Use something like this:

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

Make sure you do not attempt to add a new alias to the databases dictionary while there is ANY database activity on the current thread.

An issue you need to overcome, is that this code will need to be placed somewhere were it will always be touched by the current thread before trying to access the database. I use middleware to achieve this.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文