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

时间:2019-05-10 09:17:33

标签: python mysql django windows

我有一个可以在Mac和Linux上使用的Django设置文件,可以使用我的文件。 my.cnf文件以连接到AWS上的远程MySQL数据库。但是,在Windows 10上似乎并非如此。它一直说它无法连接到本地数据库,就像my.cnf文件不存在一样。

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

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中进行编码。

1 个答案:

答案 0 :(得分:0)

我已经解决了问题,但是..不是我想要的方式。我不知道为什么,但是当尝试使用jan.os和windows连接到mysql数据库时,它们似乎不喜欢使用os.path或Path。

因此,我使用了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可以正常工作,除非尝试在Windows上使用django读取它。这不是我想要的情况,但确实可以解决问题。我希望这有助于其他人在连接到Windows上的远程mysql服务器时可能会做同样的事情。