Django 连接到 IBM Cloud 数据库

Posted

技术标签:

【中文标题】Django 连接到 IBM Cloud 数据库【英文标题】:Django connect to IBM Cloud database 【发布时间】:2020-06-03 09:52:51 【问题描述】:

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

然后安装 ibm_db_django

$ easy_install ibm_db_django

然后在setting.py中导入

import ibm_db_django

然后我在 settings.py 中添加了凭据

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 cloud db 吗? 现在如何测试它是否连接到数据库,以及如何从数据库生成模型?

【问题讨论】:

您可以按照此处所述进行测试:ibm.com/support/knowledgecenter/en/SSEPGG_11.1.0/… 它会创建一个示例项目。 “迁移表”是什么意思? 嗨,python 的输出 --version: Python 3.6.9 :: Anaconda, Inc. python -c "import django; print(django.get_version())": 2.2.5 pip show ibm_db_django 的输出:Name: ibm-db-django Version: 1.2.0.0 Summary: DB2 support for Django framework. Home-page: http://pypi.python.org/pypi/ibm_db_django/ Author: Ambrish Bhargava, Tarun Pasrija, Rahul Priyadarshi Author-email: opendev@us.ibm.com License: Apache License 2.0 Location: c:\users\internet\anaconda3\lib\site-packages\ibm_db_django-1.2.0.0-py3.6.egg Requires: ibm-db, django Required-by: 【参考方案1】:

使用以下版本,我可以连接 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,请按照djangoproject.com 的 django 版本在线教程进行操作。

我尝试了这些版本(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 ).

【讨论】:

以上是关于Django 连接到 IBM Cloud 数据库的主要内容,如果未能解决你的问题,请参考以下文章

将 Django 连接到 Google Cloud SQL

IBM Cloud Object Storage Connection 问题 Watson Studio Python 笔记本

Django、Informix、ibm_db 和 DB2 数据服务器驱动程序

在 Python Flask Cloud Foundry/IBM Cloud 应用程序中添加 Java/JRE/JVM

无法将 Spring Boot 应用程序连接到 IBM Informix 数据库

Django 不会连接到 Redis Docker 容器