#django #python-3.x #django-models
#django #python-3.x #django-модели
Вопрос:
Каков наилучший способ изменить способ django
подключения к БД (т. Е. MySQL)?
Например, что мне делать, если мне нужно django
подключиться к БД через ssh
туннель, настройки которого могут динамически меняться? (Я планирую использовать sshtunnel)
Я понимаю, что я должен sub-class
django.db.backends.mysql.base.DatabaseWrapper
и, вероятно, super()
/ изменить get_new_connection(self, conn_params)
? (смотрите пример ниже)
Но тогда как бы я отправил этот пользовательский class
в настройках, поскольку кажется, что настройки ожидают путь к модулю, а не к классу?
Что-то среди строк:
class myDatabaseWrapper(DatabaseWrapper):
"""Oversimplified example."""
def get_new_connection(self, conn_params):
with open('path/to/json.js', 'rt') as file:
my_conn_params = json.load(file)
conn_params.update(my_conn_params)
return super().get_new_connection(my_conn_params)
Комментарии:
1. Изменение настроек может вызвать у вас проблемы, но я бы начал с рассмотрения этого; github.com/mvx24/django-dbtunnel
2. @markwalker_ Спасибо за предложение. Я не собираюсь изменять
settings
динамически, а скорее параметры подключения, как показано в отредактированном вопросе. Так что каждый раз, когда необходимо установить (или повторно установить) новые подключения к БД, настройки для этого подключения могут быть обновлены.3. Возможно, это можно сделать, отправив сигнал всякий раз, когда вы собираетесь подключиться к БД, и установить SSH-соединение в этот момент. Возможно, стоит заглянуть в. docs.djangoproject.com/en/2.2/topics/signals /…