下载安装达梦数据库和对应python包下载见达梦官网。

产品下载 | 达梦数据库

下载时候如果Linux系统不知道下载哪个就下载centos7

java连接达梦数据库集群的配置 django连接达梦数据库_python

另外mac电脑无法使用!!

如果从其他数据库(比如mysql)同步数据和迁移的时候只有一两次不需要自动化的话,就老老实实的用官方提供的管理工具就好了。没必要费劲去用disql 执行sql文件。

达梦python环境配置见官方文档:

Python 开发环境准备 | 达梦技术文档

常见问题

Traceback (most recent call last):
  File "setup.py", line 97, in <module>
    raise DistutilsSetupError(messageFormat % (userDmHome,DAMENG_VERSION))
distutils.errors.DistutilsSetupError: Dameng home (/dm8) does not refer to an DM8.1 installation or dmdpi library missing.

如果按照官方文档中的配置或者其他常见解决方式无法解决,查看是不是下载的达梦包系统不适配。

Django启动后的问题:

问题1: 
    目前django_dmpython最高版本只适配到django3.1.7,目前版本django3.2。启动会报错。
解决方式: 
    django降版本至django_dmpython相同版本。例如django_dmpython所在安装包目录是django317,则对应django3.1.*版本都适配。

问题二:
    django 中连接数据库使用ORM框架,新增数据时,产生报错。
问题描述: 
    DatabaseError: [CODE:-2111]第1 行附近出现错误:无效的列名[AAAAAAAAAAAAAAAAAR],查看数据库发现数据已经录入,问题出现在返回新增结果时候。通过查找发现是django_dmpython中自带文件调用方法时候的原生语法错误。文件目录: /root/服务器虚拟环境路径/lib/python3.8/site-packages/django_dmPython/operations.py
    错误语句
    query = 'select %s from %s where rowid = %s' %(self.quote_name(pk_name), self.quote_name(table_name), cursor.lastrowid
    语句错误原因: where 条件查询中如果条件是字符串需要在语句中标记为字符串。
解决方式: 
    修改本文件中语句为query = """select %s from %s where rowid = '%s'""" %(self.quote_name(pk_name), self.quote_name(table_name), cursor.lastrowid

问题三:
    排序操作报错[CODE:-2685]第1 行附近出现错误:\n试图在blob或者clob列上排序或比较
解决方式:
    修改达梦数据库参数ENABLE_BLOB_CMP_FLAG
    
    sp_set_para_value(1,'ENABLE_BLOB_CMP_FLAG',1)
    
    参数说明:
    将数据库参数ENABLE_BLOB_CMP_FLAG设置为1后,数据库支持DISTINCT、ORDER BY、分析函数和集函数支持对大字段进行处理。
    **ENABLE_BLOB_CMP_FLAG:**是否支持大字段类型的比较。0:不支持;1:支持。设置为1后支持DISTINCT、ORDER BY、分析函数和集函数支持对大字段进行处理。