Драйвер db2 для Django? - PullRequest
0 голосов
/ 08 мая 2020

Мне кажется, что Django в настоящее время предоставляет только 4 движка базы данных, а именно:

  1. 'django .db.backends. postgresql'
  2. ' django .db.backends. mysql '
  3. ' django .db.backends.sqlite3 '
  4. ' django .db.backends. oracle '

Если я использую MySQL, все, что мне нужно сделать, это просто заполнить Engine 'django.db.backends.mysql'. Но теперь, поскольку моя основная база данных - это DB2, у меня возникли проблемы с подключением ее к pyodb c. Что нужно?

import os

SECRET_KEY = 'o0zdmzzdw44tkd5a7o*h-@*bo)r@f#)!)$)8f-y%=sn*kr)@t%'

DEBUG = True

ALLOWED_HOSTS = [127.0.0.1]

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'arapi.apps.ArapiConfig', #my projeck
    'rest-framework', 
]

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

ROOT_URLCONF = 'arDRFAPIWEB.urls'

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

WSGI_APPLICATION = 'arDRFAPIWEB.wsgi.application'

DATABASES = {
      'default': {
          'ENGINE': 'ibm_db_django',
          'NAME': as400,
          'USER' : root,
          'PASSWORD' : root,
          'HOST' : as400.****.co.id,
          'PORT' : 3306,
          'PCONNECT'   :  True, #Optional property, default is false
      }
   }

AUTH_PASSWORD_VALIDATORS = [
    {
        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
    },
    {
        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
    },
]


LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True

STATIC_URL = '/static/'

При запуске python manage.py test я получил эту ошибку

Попробуйте использовать 'django .db.backends.XXX', где XXX - один of: 'mysql', 'oracle', 'postgresql', 'sqlite3'

Хотя я понизил версию python into 3.6.5 и мою django is 2.1.1, которые я думал, что это может решить проблему.

1 Ответ

1 голос
/ 08 мая 2020

Для IBM Db2 доступен драйвер Django. Он даже упоминается в документации Db2 и есть документ, в котором описана процедура настройки для Db2 и Django. Там они предлагают такую ​​конфигурацию:

DATABASES = {
  'default': {
  'ENGINE'   : 'ibm_db_django',
  'NAME'     : 'database',
  'USER'     : 'user',
  'PASSWORD' : 'password',
  'HOST'     : 'localhost',
  'PORT'     : '50000',
  'PCONNECT' :  True,      #Optional property. It is true by default
  }
}

Вы можете найти драйвер пакет ibm_db_ django в соответствующем репозитории GitHub.

Вам необходимо указать ibm_db_django вместо, например, django.db.backends.mysql. django.db.backends.db2 выдаст ошибку.

...