为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:2012.10.21
【操作系统】:win10
【CPU】:
【问题描述】*:
我在做毕设,尝试用 django 链接达梦数据库。完全按照文档:达梦:Django 框架 进行操作。并成功连接到达梦数据库。
有大哥有解决方法的话,直接打我电话也行:15011373696
python版本:3.7
但是在进行到设置 DATABASES 设置项时出现了问题。
DATABASES = {
'default': {
'ENGINE': 'django_dmPython', # 使用的数据库后端
'NAME': 'DAMENG',
'USER': 'SYSDBA',
'PASSWORD': 'SYSDBA',
'HOST': '172.0.0.1',
'PORT': '5237',
'OPTIONS': {'local_code': 1, 'connection_timeout': 5}
}
此时会出现如下报错:
G:\pythonProject\dm8_django317\mysite\mysite\settings.py changed, reloading.
Watching for file changes with StatReloader
Exception in thread django-main-thread:
Traceback (most recent call last):
File "G:\Anaconda\lib\site-packages\django\db\utils.py", line 111, in load_backend
return import_module('%s.base' % backend_name)
File "G:\Anaconda\lib\importlib\__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 728, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "G:\Anaconda\lib\site-packages\django_dmPython\base.py", line 18, in <module>
from django.utils.deprecation import RemovedInDjango30Warning
ImportError: cannot import name 'RemovedInDjango30Warning' from 'django.utils.deprecation' (G:\Anaconda\lib\site-packages\django\utils\deprecation.py)
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "G:\Anaconda\lib\threading.py", line 926, in _bootstrap_inner
self.run()
File "G:\Anaconda\lib\threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "G:\Anaconda\lib\site-packages\django\utils\autoreload.py", line 53, in wrapper
fn(*args, **kwargs)
File "G:\Anaconda\lib\site-packages\django\core\management\commands\runserver.py", line 110, in inner_run
autoreload.raise_last_exception()
File "G:\Anaconda\lib\site-packages\django\utils\autoreload.py", line 76, in raise_last_exception
raise _exception[1]
File "G:\Anaconda\lib\site-packages\django\core\management\__init__.py", line 357, in execute
autoreload.check_errors(django.setup)()
File "G:\Anaconda\lib\site-packages\django\utils\autoreload.py", line 53, in wrapper
fn(*args, **kwargs)
File "G:\Anaconda\lib\site-packages\django\__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "G:\Anaconda\lib\site-packages\django\apps\registry.py", line 114, in populate
app_config.import_models()
File "G:\Anaconda\lib\site-packages\django\apps\config.py", line 211, in import_models
self.models_module = import_module(models_module_name)
File "G:\Anaconda\lib\importlib\__init__.py", line 127, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
File "<frozen importlib._bootstrap>", line 983, in _find_and_load
File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 728, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "G:\Anaconda\lib\site-packages\django\contrib\auth\models.py", line 2, in <module>
from django.contrib.auth.base_user import AbstractBaseUser, BaseUserManager
File "G:\Anaconda\lib\site-packages\django\contrib\auth\base_user.py", line 48, in <module>
class AbstractBaseUser(models.Model):
File "G:\Anaconda\lib\site-packages\django\db\models\base.py", line 122, in __new__
new_class.add_to_class('_meta', Options(meta, app_label))
File "G:\Anaconda\lib\site-packages\django\db\models\base.py", line 326, in add_to_class
value.contribute_to_class(cls, name)
File "G:\Anaconda\lib\site-packages\django\db\models\options.py", line 206, in contribute_to_class
self.db_table = truncate_name(self.db_table, connection.ops.max_name_length())
File "G:\Anaconda\lib\site-packages\django\db\__init__.py", line 28, in __getattr__
return getattr(connections[DEFAULT_DB_ALIAS], item)
File "G:\Anaconda\lib\site-packages\django\db\utils.py", line 214, in __getitem__
backend = load_backend(db['ENGINE'])
File "G:\Anaconda\lib\site-packages\django\db\utils.py", line 126, in load_backend
) from e_user
django.core.exceptions.ImproperlyConfigured: 'django_dmPython' isn't an available database backend.
Try using 'django.db.backends.XXX', where XXX is one of:
'mysql', 'oracle', 'postgresql', 'sqlite3'
以下报错 ,说明 django_dmPython 不是可用的数据库后端。
django.core.exceptions.ImproperlyConfigured: 'django_dmPython' isn't an available database backend.
Try using 'django.db.backends.XXX', where XXX is one of:
'mysql', 'oracle', 'postgresql', 'sqlite3'
我在网上查阅了相关代码,别人写的 ‘django_dmPython’是可用的。我不知道我错在哪里?
为证明我dmpython环境配置没有问题,我这边编写的程序来证明:
# coding:utf-8
import dmPython
try:
conn = dmPython.connect(user='SYSDBA', password='SYSDBA', server='127.0.0.1', port=5237)
cursor = conn.cursor()
print('python: conn success!')
try:
# 清空表,初始化测试环境
cursor.execute('delete from "NewRetail"."user"')
print('del')
cursor.execute('insert into "NewRetail"."user"("phone") VALUES (15011373696);')
print('python: insert success!')
cursor.execute('select * from "NewRetail"."user"')
res = cursor.fetchall()
for tmp in res:
print(tmp)
except (dmPython.Error, Exception) as err:
None
except (dmPython.Error, Exception) as err:
print(err)
conn.close()
except (dmPython.Error, Exception) as err:
print(err)
返回结果:
G:\Anaconda\python.exe G:/pythonProject/dm8_django317/test.py
python: conn success!
del
python: insert success!
(27, '15011373696', None, None)
进程已结束,退出代码为 0
先卸载已经安装的然后直接使用下面命令重新安装试试

pip install dmpython
pip install Django_dmPython
pip install django==3.1.7
我按文档测试是可以的