Django的Db2驱动程序?

bwleehnv  于 7个月前  发布在  DB2
关注(0)|答案(2)|浏览(64)

在我看来,Django目前只提供了4个后端数据库引擎,它们是:
1.'django.db.backends.postgresql'
1.'django.db.backends.mysql'
1.'django.db.backends.sqlite3'
1.网站Mapdjango.db.backends.oracle
如果我使用MySQL,我所要做的就是用'django.db.backends.mysql'填充Engine。但是现在,因为我的主数据库是DB2,我在连接它和pyodbc时遇到了一些问题。需要什么?

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是以下之一:'mysql',' oracle','postgresql','sqlite3'
虽然我已经降级了python into 3.6.5版本和我的django is 2.1.1版本,我认为这可能会解决这个问题。

g52tjvyc

g52tjvyc1#

有一个适用于IBM Db2的Django驱动程序。它甚至是referenced in the Db2 documentation,并且有一个描述setup procedure for Db2 and 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
  }
}

字符串
您可以在相关的GitHub存储库中找到驱动程序package ibm_db_django
您需要指定ibm_db_django而不是django.db.backends.mysqldjango.db.backends.db2将给予错误。

z6psavjg

z6psavjg2#

对于有同样问题的人:
此错误是由于Django、ibm_db和ibm_db_django中的版本兼容性问题
我目前在Windows上的版本是:
Python 3.8
ibm_db 3.1
ibm_db_django 1.5.3.0
Django 4.2
在Ubuntu版本的ibm_db 3.2上运行正常。
请注意,Django on python的先决条件在ibm_db_django的Github主页中介绍:
Django Framework 2.2.0或3.1或3.2或4.2

相关问题