Django 连接到 IBM Cloud 数据库

Django connect to IBM Cloud database

我是 Django 的新手。我正在尝试将 Django 应用程序连接到 IBM Cloud 数据库,我加载了我的数据 IBM 云并创建了凭证。

然后安装ibm_db_django

$ easy_install ibm_db_django

然后在 setting.py 中导入

import ibm_db_django

然后我在 settings.py

中添加了 credionals
DATABASES = {
'default': {
    'ENGINE'   : 'ibm_db_django',
    'NAME'     : 'BLUDB',
    'USER'     : 'USER',
    'PASSWORD' : 'PASSWORD',
    'HOST'     : 'dashdb-txn-sbox-yp-lon02-02.services.eu-gb.bluemix.net',
    'PORT'     : '50000',
    'PROTOCOL' : 'TCPIP',
    'PCONNECT' :  True,
},

}

python manage.py test django.contrib.auth 的输出:

    System check identified no issues (0 silenced).

这足以连接到 ibm 云数据库吗? 现在我如何测试它是否连接到数据库,以及如何从数据库生成模型?

使用以下版本,我可以连接 python + django + ibm_db_django + Db2-on-cloud .

运行 python manage.py migrate 显示连接Db2-on-cloud成功

根据版本的不同,如果缺少特定的数据库权限,python manage.py migrate 可能会因 Db2-on-cloud 'lite'(免费)计划而失败。

要在 运行 和 manage.py migrate 成功后进一步使用 django,请按照您的 django 版本在 djangoproject.com 上的在线教程进行操作。

我尝试了这些版本(2020 年 2 月):

python          3.6.9  x64
pip             20.0.2
django          2.2.5
ibm_db          3.0.1
ibm_db_django   1.2.0.0a0  (lower versions always failed).

注意:其他组合可能有效,您的里程可能会有所不同。

我修补了 ibm_db_dbi.py 以解决 github 中详述的开放缺陷 (https://github.com/ibmdb/python-ibmdb-django/issues/44) (感谢 trebor74hr )

为了使 manage.py migrate 步骤生效,我所做的三个 settings.py 更改是:

(1) 安装的应用可能因您的版本和应用而异。

  INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.flatpages',
    'django.contrib.redirects',
    'django.contrib.sites',

]

(2)

DATABASES = {
  'default': {
  'ENGINE'   : 'ibm_db_django',
  'NAME'     : 'bludb',
  'USER'     : '......',
  'PASSWORD' : '...............',
  'HOST'     : 'dashdb-txn-sbox-............services....bluemix.net',
  'PORT'     : '50000',
  'PCONNECT' :  True,      #Optional property. It is true by default
  }
}

(3)

#USE_TZ = True
   (or remove the line, the # makes it a comment ).