如何在OpenShift中将MySQL Cartridge连接到Django

时间:2015-11-13 08:13:36

标签: python mysql django configuration openshift

我在OpenShift中安装了django 1.8.4 / Python 3.3应用程序,并添加了一个MySQL 5.5盒式磁带。现在我想让django使用MySQL而不是sqlite3。为此,我从

更改了setup.py
install_requires=[
    'Django==1.8.4'
],

install_requires=[
    'Django==1.8.4',
    'mysqlclient'
],

我从

更改了wsgi / myproject / myproject / settings.py
DATABASES = {
    'default': {
        # GETTING-STARTED: change 'db.sqlite3' to your sqlite3 database:
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(DATA_DIR, 'db.sqlite3'),
    }
}

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mysql_db_name', 
        'USER': 'mysql_username', 
        'PASSWORD': 'xxxxxx', 
        'HOST': os.environ['OPENSHIFT_DB_HOST'],
        'PORT': os.environ['OPENSHIFT_DB_PORT'],
    }
}

当我git推送到OpenShift时,我收到以下错误:

remote: Executing 'python /var/lib/openshift/5642f9ad7628e16a6300030a/app-root/runtime/repo//wsgi/myproject/manage.py migrate --noinput'       
remote: Traceback (most recent call last):       
remote:   File "/opt/rh/python33/root/usr/lib64/python3.3/os.py", line 673, in __getitem__       
remote:     value = self._data[self.encodekey(key)]       
remote: KeyError: b'OPENSHIFT_DB_HOST'       

我做错了什么?

谢谢,

碧玉

1 个答案:

答案 0 :(得分:1)

正如错误消息所示,OPENSHIFT_DB_HOST似乎不是正确的环境变量。尝试使用OPENSHIFT_MYSQL_DB_HOST(并为其他变量添加数据库类型_MYSQL)。

您实际上也可以将变量用于用户名和密码,详情请参见: https://developers.openshift.com/en/managing-environment-variables.html#database-variables