python - 如何连接到 Heroku 上的 MySQL?

标签 python mysql django heroku

我有一个使用 MySQL 作为数据库的 Django 项目。在我的开发机器上,MySQL 数据库在我的本地机器上运行,如下所示:

DATABASES = {

    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'xxx',
        'USER': 'root',
        'PASSWORD': 'xxxx',
        'HOST': 'localhost',
        #'PORT': '3306',
    }
}

我已成功将项目部署到 Heroku,但它一直显示

2003, "Can't connect to MySQL server on 'localhost' ([Errno 111] Connection refused)

因为设置是本地 MySQL 而 views.py 包含导入本地数据库的函数。我仍然不知道如何让网站连接到这个数据库。

有没有办法让它与 Heroku 一起工作,还是我需要找另一个主机?

最佳答案

juanmhidalgo's answer是一个好的开始,可以推广到任意环境变量。但如果您只关心数据库变量,还有另一种解决方案。

默认情况下,Heroku 提供一个 PostgreSQL 数据库,并使用可用于连接到它的连接字符串设置您应用程序的 DATABASE_URL

据我所知,各种 MySQL 插件也设置了这个变量,但知道您选择了哪个插件会很有帮助,以便我们确认。它可能需要根据另一个环境变量手动设置。

假设 DATABASE_URL 环境变量设置正确,您可以使用 dj-database-url直接设置你的数据库,在你的 settings.py 文件中选择提供当变量不可用时使用的回退(例如,在你的开发箱上):

import dj_database_url

DATABASES['default'] = dj_database_url.config(
    default='mysql://root:<password>@localhost:3306/<database>',
)

关于python - 如何连接到 Heroku 上的 MySQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52378074/

相关文章:

python - Pandas SQL 等价于 update where group by

python - PySide 中存在函数,但仍然出现属性错误

python - Tensorflow 的开端——类的数量

mysql - 请帮我优化包含几百条记录的子查询的mysql查询

php - Laravel 嵌套数组的类型转换

python - 使用 Django 和 Python 插入数据库时​​出现错误

python - 将微符号字符保存在 mongo 集合中

mysql - 从左到右读取 MySQL 索引,是表 col 顺序计数还是仅索引顺序?

python - Django Postgres 内存泄漏

database - Django:如何为异构数据类型的树建模?