在我看来,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
版本,我认为这可能会解决这个问题。
2条答案
按热度按时间g52tjvyc1#
有一个适用于IBM Db2的Django驱动程序。它甚至是referenced in the Db2 documentation,并且有一个描述setup procedure for Db2 and Django的文档。在那里,他们建议这样的配置:
字符串
您可以在相关的GitHub存储库中找到驱动程序package ibm_db_django。
您需要指定
ibm_db_django
而不是django.db.backends.mysql
。django.db.backends.db2
将给予错误。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