Возможно ли обновить соединения Django на лету? - PullRequest
4 голосов
/ 01 июля 2010

Можно ли добавить новое соединение с базой данных в Django на лету?

У меня есть приложение, которое использует несколько баз данных (django 1.2.1), и во время работы ему разрешено создавать новые базы данных.Мне нужно было бы использовать эту новую базу данных сразу (django.db.connections[db_alias]).Возможно ли это без перезагрузки сервера?Использование модуля reload здесь и там?

Спасибо за ваше время.

1 Ответ

3 голосов
/ 05 октября 2011

Возможно ... но не рекомендуется ... Вы можете получить доступ к текущему обработчику соединения ...

Используйте что-то вроде этого:

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

Убедитесь, что вы этого не делаетепопытайтесь добавить новый псевдоним в словарь баз данных, когда в текущем потоке есть ЛЮБОЕ действие базы данных.

Проблема, которую вам нужно преодолеть, заключается в том, что этот код нужно будет где-то разместить, где его всегда касаютсятекущим потоком, прежде чем пытаться получить доступ к базе данных.Для этого я использую промежуточное программное обеспечение.

...