#python #sql #apache #flask
Вопрос:
Итак, у меня запущено приложение flask, и вот как выглядит файл конфигурации:
class config(object):
SECRET_KEY = 'india'
class configTest(config):
MYSQL_HOST = 'host1'
MYSQL_PORT = 3306
MYSQL_USER = 'admin'
MYSQL_PASSWORD = 'yangmai'
MYSQL_DB = 'ide'
class configProd(config):
MYSQL_HOST = 'host2'
MYSQL_PORT = 3306
MYSQL_USER = 'admin'
MYSQL_PASSWORD = 'yangmai'
MYSQL_DB = 'ide'
В моем init.py, Я делаю это:
app.config.from_object('project.config.configTest')
Работает хорошо. Теперь я хочу предоставить пользователю возможность переключать базу данных во время входа в систему. Таким образом, по сути, класс конфигурации должен измениться с configTest на configProd или наоборот по выбору пользователя.
Идея состоит в том, чтобы предоставить пользователю возможность доступа к тестовым и производственным средам без развертывания двух отдельных приложений. Есть какие-нибудь решения? Кроме того, приложение работает под управлением apache.
Комментарии:
1. Вы используете SQLAlchemy или Flask-SQLAlchemy ? Затем подключение к БД выполняется при запуске приложения. Если, с другой стороны, вы сами обрабатываете соединение, то проблем нет, на самом деле у вас могут быть открыты два соединения одновременно.
2. Я использую Flask-Mysqldb. Как мне определить два соединения в моей конфигурации, а затем использовать их в соответствии с конкретным случаем? Не могли бы вы, пожалуйста, поделиться некоторыми намеками на этот счет?
3. По — видимому, с помощью этого пакета можно обрабатывать несколько подключений-см.: Flask-MySQL . И если обе базы данных находятся на одном хосте, и у пользователя есть права доступа к ним обоим, вы можете добавить в таблицы имя базы данных.
4. Меня беспокоит, есть ли способ изменить класс конфигурации в init.py после запуска приложения? Обе базы данных идентичны по структуре, единственное различие заключается в данных. Я хочу избавить себя от необходимости использовать операторы if для двух запросов на подключение.