首页 > 数据库 >Python Django适配dm8(达梦)数据库

Python Django适配dm8(达梦)数据库

时间:2024-02-26 14:47:37浏览次数:48  
标签:name Python 适配 py Django blog https dm8 dmPython


官方文档

https://eco.dameng.com/document/dm/zh-cn/start/python-development.html

Django适配达梦

https://blog.csdn.net/qq_35349982/article/details/132165581

https://blog.csdn.net/weixin_61894388/article/details/126330168

项目适配达梦

  1. 升级或安装依赖
Django==3.1.7
django-dmPython==3.1.7
dmPython==2.5.5
  1. 更改所有的model文件把db_table = 'ROLE'小写改成大写
  2. 修改连接数据库方式
# 达梦数据库
DATABASES = {
    'default': {
        'ENGINE': 'django_dmPython',
        'NAME': 'dm8_test',
        'USER': 'SYSDBA',
        'PASSWORD': 'SYSDBA001',
        'HOST': '127.0.0.1',
        'PORT': '5236',
    }
}

命令

https://www.modb.pro/db/237497

https://blog.51cto.com/u_7548043/5464097

https://www.cnblogs.com/zdstudy/p/16550878.html

https://blog.csdn.net/Dyeln/article/details/125877919

http://www.floverow.com/index.php?id=725

https://blog.csdn.net/hongweigg/article/details/92621952

部署达梦数据库/启动

命令解析:https://blog.csdn.net/Januea/article/details/134240787

docker run -d -p 30236:5236 --restart=always --name dm8_test --privileged=true -e PAGE_SIZE=16 -e LD_LIBRARY_PATH=/opt/dmdbms/bin -e  EXTENT_SIZE=32 -e BLANK_PAD_MODE=1 -e LOG_SIZE=1024 -e UNICODE_FLAG=1 -e LENGTH_IN_CHAR=1 -e INSTANCE_NAME=dm8_test -v /data/dm8_test:/opt/dmdbms/data dm8_single:dm8_20230808_rev197096_x86_rh6_64
python manage.py makemigrations accounts application commons mssa report upgrade
python manage.py migrate
python3 manage.py shell -c "from django.contrib.auth.models import User; User.objects.create_superuser('[email protected]', '[email protected]', 'Admin123')"

基础命令

# 链接 SYSDBA是默认用户名 SYSDBA001是默认密码
/opt/dmdbms/bin/disql SYSDBA/SYSDBA001 

#查看表结构
SELECT DBMS_METADATA.GET_DDL('TABLE','table_name') FROM dual;

问题汇总

  1. 插入数据时,报错DatabaseError: [CODE:-2111]

image-20240223151854834

(dmdbms) tjw@tjw-ThinkPad-P15v-Gen-1:/var/www/rc-platform$ python manage.py migrate
Operations to perform:
  Apply all migrations: accounts, admin, application, auth, commons, contenttypes, mssa, report, sessions, upgrade
Running migrations:
  Applying auth.0003_alter_user_email_max_length...Traceback (most recent call last):
  File "/home/tjw/.virtualenvs/dmdbms/lib/python3.8/site-packages/django/db/backends/utils.py", line 82, in _execute
    return self.cursor.execute(sql)
  File "/home/tjw/.virtualenvs/dmdbms/lib/python3.8/site-packages/django_dmPython/base.py", line 439, in execute
    return self.cursor.execute(query, args)
dmPython.DatabaseError: [CODE:-2111]第1 行附近出现错误:
无效的列名[AAAAAAAAAAAAAAAAAO]

解决方式

修改源码,位置django_dmPython/operations.py

query = """select %s from %s where rowid = '%s'""" %(self.quote_name(pk_name), self.quote_name(table_name), cursor.lastrowid

借鉴:https://blog.csdn.net/m0_69072302/article/details/128836334

  1. 无效的列名[WTKJE]

解决方式

# 把model.py 的db_table由小写改成大写即可
    class Meta:
        db_table = 'ROLE'
  1. dmPython.IntegrityError: [CODE:-6609]违反列[LAST_LOGIN]非空约束

解决方式:使用sql把字段改成去掉约束

ALTER TABLE AUTH_USER MODIFY LAST_LOGIN NULL;

标签:name,Python,适配,py,Django,blog,https,dm8,dmPython
From: https://www.cnblogs.com/tjw-bk/p/18034282

相关文章

  • Pydantic:强大的Python 数据验证库
    PydanticPydantic是一个在Python中用于数据验证和解析的第三方库。它提供了一种简单且直观的方式来定义数据模型,并使用这些模型对数据进行验证和转换。Pydantic的一些主要特性:类型注解:Pydantic使用类型注解来定义模型的字段类型。你可以使用Python内置的类型、自定义......
  • python如何将自定义目录添加到sys.path中,如何将自定义目录从sys.path中删除
    python如何将自定义目录添加到sys.path中,如何将自定义目录从sys.path中删除背景:在python脚本中,经常需要将自定义的包导入当前脚本,但该包并非pip安装,不在sys.path中,无法直接导入,所以需要临时导入自定义包;另外有时候将自定义的包永久写入了sys.path后,但实际又用不到该包,需要将自定......
  • [oeasy]python0008_输出h字符_REPL_引号_括号_什么是函数
    输出h字符_REPL_引号_括号_什么是函数......
  • 【Python】conda基本使用、pip换源、pip超时问题解决
    conda问题往期笔记conda安装:https://www.cnblogs.com/mllt/p/Anaconda-install.htmlconda基础操作https://www.cnblogs.com/mllt/p/jqsj_base_000.html创建环境命令行创建环境的方式见上文“conda基础操作”后面的链接文章。在此演示的是使用pycharm创建conda虚拟环境......
  • python——面向对象——知识汇总二
    Pythonproperty()函数:定义属性 我们一直在用“类对象.属性”的方式访问类中定义的属性,其实这种做法是欠妥的,因为它破坏了类的封装原则。 正常情况下,类包含的属性应该是隐藏的,只允许通过类提供的方法来间接实现对类属性的访问和操作。因此,在不破坏类封装原则的基础上,为了能......
  • Python数据结构与算法05——二分查找
    二分查找——递归版:defbinarySearch(aimlist,item):#获取列表的长度n=len(aimlist)#如果列表非空ifn>0:#计算中间索引mid=n//2#如果中间元素是目标元素,则找到了ifaimlist[mid]==item:......
  • 加速Python代码的秘密武器,探索Cython的秘密
    首先和大家明确一下这个Cython单词的读法,这个单词Cython以前我也不知道怎么读,老后面要用到这个包的时候,老是不清楚读法,才去搜了下,这个单词是读"赛森",就是前面的cy是读"赛",后面的读法和python后一个读音thon一样。Cython是什么Cython是一个用于将Python代码转换为C或C++代码的编......
  • 测试工程师常用的python库
    大家好,今天给各位小伙伴带来的是测试工程师常用的10个python库,相信有些小伙伴肯定知道一些库,也使用过一些库。下面我们就来聊聊这常用的10个python库,我们主要介绍这些库和这些库的一些应用场景,方便没有接触过的小伙伴知道这些库的作用。个人认为以下10个库是测试工程师最常用的库......
  • 常用的Python代码片段(绘图)
    Proplot绘制具有经纬网的地图importproplotasppltimportcartopyfig,ax=pplt.subplots(proj=['cyl'],ncols=1,nrows=1)ax.add_feature(cartopy.feature.COASTLINE)ax.add_feature(cartopy.feature.BORDERS,linestyle=':',linewidth=0.5)ax.add_featu......
  • Python 相关知识-1
    1.Python内存泄漏和内存溢出是两种不同的问题,但它们都与内存管理有关.内存泄漏是指在使用动态分配的内存时,由于某些原因导致某些已分配的内存块无法被释放,从而使得程序占用的内存不断增加,最终导致内存耗尽。在Python中,内存泄漏可能由多种原因引起,例如全局变量、闭包、循环......