Python 在Windows 10上使用django连接到远程mysql

Python 在Windows 10上使用django连接到远程mysql,python,mysql,django,windows,Python,Mysql,Django,Windows,我有一个Django设置文件,它在mac和linux上工作,可以让我使用我的。my.cnf文件连接到AWS上的远程MySQL数据库。然而,在Windows10上,情况似乎并非如此。它一直说它无法连接到本地数据库,就好像my.cnf文件不存在一样 我已经在windows 10上安装了mysql连接器和python mysql连接器,以及pip安装mysqlclient,就像我在linux上安装mysqlclient一样,但问题仍然存在 db_conf = Path("Project/my.cnf"

我有一个Django设置文件,它在mac和linux上工作,可以让我使用我的。my.cnf文件连接到AWS上的远程MySQL数据库。然而,在Windows10上,情况似乎并非如此。它一直说它无法连接到本地数据库,就好像my.cnf文件不存在一样

我已经在windows 10上安装了mysql连接器和python mysql连接器,以及pip安装mysqlclient,就像我在linux上安装mysqlclient一样,但问题仍然存在

db_conf = Path("Project/my.cnf")
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'OPTIONS': {
            'read_default_file': '{}'.format(db_conf),
        }
   }
}
使用相同的设置文件,我可以运行makemigrations、迁移和运行服务器。在windows上,同样的东西会使它崩溃。my.cnf在Windows/Mac/Linux上也是一样的。如有任何帮助,将不胜感激


我怀疑这是Windows执行路径方式的一个障碍,但我不确定如何解决这个问题,因为我通常在Linux中编写代码。

我已经解决了这个问题,但..不是以我想要的方式解决的。我不知道为什么,但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',
    }
}

我觉得整个情况很有趣的是,除了在Windows上用django阅读它时,Path正常工作。这不是我想要的情况,但它确实解决了问题。我希望这能帮助那些在连接到Windows上的远程mysql服务器时可能正在努力做同样事情的人。

我已经解决了这个问题,但..不是以我想要的方式解决的。我不知道为什么,但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',
    }
}

我觉得整个情况很有趣的是,除了在Windows上用django阅读它时,Path正常工作。这不是我想要的情况,但它确实解决了问题。我希望这能帮助那些在连接到Windows上的远程mysql服务器时可能很难做到这一点的人。

您是否尝试过直接在设置中输入配置和凭据?手动输入确实有效,因此我相信Windows理解路径位置肯定会有问题。我需要研究如何将linux路径转换为windows路径,反之亦然。您是否尝试过将配置和凭据直接输入到设置中?手动输入确实有效,因此我认为windows理解路径位置肯定有问题。我需要研究如何将linux路径转换为windows,反之亦然。乐意将不需要configparser的其他人的解决方案作为一种更为简约的替代方案。乐意将不需要configparser的其他人的解决方案作为一种更为简约的替代方案。