Подключиться к удаленному MySQL с Django на Windows 10 - PullRequest
1 голос
/ 10 мая 2019

У меня есть файл настроек Django, который работает на Mac и Linux, который позволяет мне использовать мой. Файл my.cnf для подключения к удаленной базе данных MySQL в AWS. Тем не менее, в Windows 10 это не так. Он продолжает говорить, что не может подключиться к локальной базе данных, как будто файл my.cnf не существует.

Я установил MySQL-коннектор и Python MySQL-коннектор в Windows 10, а также установил pip mysqlclient так же, как и в Linux, но проблема все еще сохраняется.

db_conf = Path("Project/my.cnf")
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'OPTIONS': {
            'read_default_file': '{}'.format(db_conf),
        }
   }
}

С одним и тем же файлом настроек я могу запустить makemigrations, перенести и запустить сервер. На окнах это то же самое сбивает его. my.cnf на Windows / Mac / Linux такой же, как любая помощь.

Я подозреваю, что это зависание от способа, которым Windows делает пути, но я не уверен, как решить эту проблему, как я обычно пишу в Linux.

1 Ответ

0 голосов
/ 10 мая 2019

Я решил проблему, но ... не так, как хотел. Я не знаю почему, но django и windows, похоже, не любят использовать os.path или Path при попытке использовать их для подключения к базе данных mysql.

В связи с этим я использовал более длинный маршрут с использованием configparser и больше не использовал django для чтения файла конфигурации, а вместо этого предоставлял подробности в файле настроек.

import configparser
db_conf = Path("Project/my.cnf")
conf = configparser.ConfigParser()
conf.read(db_conf)
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': conf.get("client", "database"),
        'USER': conf.get("client", "user"),
        'PASSWORD': conf.get("client", "password"),
        'HOST': conf.get("client", "host"),
        'PORT': '3306',
    }
}

Что я нахожу забавным во всей этой ситуации, так это то, что Path работает нормально, за исключением попыток прочитать его с помощью django в Windows. Это не та ситуация, которую я хотел, но она решает проблему. Я надеюсь, что это поможет другим, кто может испытывать затруднения, делая то же самое при подключении к удаленному серверу mysql в Windows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...