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

标签 python mysql django windows

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

我已经在 Windows 10 上安装了 mysql 连接器和 python mysql 连接器,以及 pip install 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 中编写代码。

最佳答案

我已经解决了这个问题,但是..不是我想要的方式。我不知道为什么,但 django 和 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 服务器时可能正在努力做同样的事情。

关于python - 在 Windows 10 上使用 django 连接到远程 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56074445/

相关文章:

php - 显示结果不重复依赖其他表mysql

django - 初始=不适用于表单输入

python - 在 Django 中使用 POST 的参数显示 matplotlib 生成的多张图片

Python 3 - ValueError : Found array with 0 sample(s) (shape=(0, 11)) 而 MinMaxScaler 要求至少为 1

python - 构建自引用元组

python - 从子列表列表中选择最小值,并在该子列表中显示最小值的另一个值

mysql - Apache时间和MySQL异步时间

c# - 连接到 PHPMyAdmin 托管数据库

ruby-on-rails - 如何开始使用像 cassandra 这样的 NoSql 数据库开发 rails/django 应用程序?

python - 如何在 Django、Varnish、Nginx 中处理数千个遗留 URL?