本文旨在介绍如何将运行在mysql的Django项目迁移至达梦,并在提供的服务器成功启动应用、以及迁移过程遇到的问题及解决办法。
本项目主要使用了python Web应用框架Django以及基于 Django 框架的用户界面库 django-simpleui、导入和导出数据的库django-import-export来实现企业数据管理后台的开发。开发过程中需要调试,也可安装django-debug-toolbar。因此本文中,除了数据库不同,其他软件如python3和DM8数据库在新环境部署时均提前需要安装完成。
本文运行环境为麒麟操作系统。代码查收附件1中的压缩包“dataWareHouse.zip”。
创建虚拟环境前,需确定python3已安装完成。
#解压附件中的dataWareHouse.zip,进入项目第一级目录
cd dataWareHouse
# 创建虚拟环境命令
python3 -m venv myenv
# 激活虚拟环境命令
cd dataWareHouse
source myenv/bin/activate
#退出虚拟环境命令
deactivate
# pip安装运行项目所需的相关的软件版本:
pip3 install -v Django==3.2
pip3 install -v django-simpleui==2023.3.1
pip3 install -v django-import-export==3.0.0
pip3 install -v django-debug-toolbar==3.1
pip3 install -v dmPython==2.5.8
#安装jango-dmPython
cd /home/dmdba/dmdbms/drivers/python/django_dmPython3.0.0/django_dmPython
python3 setup.py install
确定系统运行所需的软件已安装成功
注意事项:迁移改造过程中,需要注意Django及django-dmPython等软件的版本。
迁移有两种方式:
方法1:使用dts工具迁移
使用dts工具从mysql迁移到dm(迁移后达梦的建表语句见目录dataWareHouse/dw.sql ,测试数据库可直接dmp导入dw.dmp文件(包含结构和数据))
方法2:使用Django相关的makemigrations、migrate命令迁移,示例如下:
#通过命令生成表结构
python3 manage.py makemigrations --empty datalist #datalist 是该项目中app名字
python3 manage.py makemigrations # 再次正常运行生成迁移文件的命令
python3 manage.py migrate # 同步数据库
执行命令同步表结构,需初始化登录后台系统的管理员账号信息系统表:
insert into "DW"."AUTH_USER" ( "PASSWORD", "LAST_LOGIN", "IS_SUPERUSER", "USERNAME", "FIRST_NAME", "LAST_NAME", "EMAIL", "IS_STAFF", "IS_ACTIVE", "DATE_JOINED") values ( 'pbkdf2_sha256$260000$Yr9Hl706lQjtqeZByWw0bM$McDTQFQVmVt60rs4MnomegfRhCycaqQzsRsMLgCwE2E=', '2025-05-16 20:55:44', 1, 'admin', '无', '无', '1340697348@qq.com', 1, 1, '2021-10-20 10:22:37');
commit;
MySQL数据库连接配置信息
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'dw',
'USER': 'dw_user',
'PASSWORD': 'dw_user#2021',
'HOST': 'localhost',
'PORT': '3306'
}
}
DM数据库连接配置信息
DATABASES = {
'default': {
'ENGINE': 'django_dmPython',
'NAME': 'DAMENG',
'USER': 'DW',
'PASSWORD': 'GZ_dm_2025',
'HOST': 'localhost',
'PORT': '5236',
'OPTIONS': {'local_code': 1, 'connection_timeout': 5}
}
}
cd dataWareHouse #进入项目路径
source myenv/bin/activate #激活虚拟环境
python3 manage.py runserver 127.0.0.1:8000#启动程序
1.setting.py中配置服务器ip
2.启动
cd dataWareHouse #进入项目路径
source myenv/bin/activate #激活虚拟环境
python3 manage.py runserver 192.168.33.240:8000#启动程序
本地访问:http://127.0.0.1:8000/admin
admin账号和密码:
用户名:admin
密码:123456
注意事项:该项目存在一些未完善的功能,请忽略。本项目旨在将原本运行在mysql的项目,迁移到dm数据库。
解决办法:
方法1:使用pip下载过程中出现下载缓慢,可以参考一下链接从相关镜像下载:https://blog.csdn.net/sl01224318/article/details/121872548
示例:下载指定django-simpleui为2023.3.1的版本
pip --default-timeout=100 install -i https://pypi.douban.com/simple --trusted-host pypi.douban.com django-simpleui==2023.3.1
方法2:通过修改pip配置,把默认源换成国内的
通过修改pip配置,命令"pip config set global.index-url 源链接" ,把默认源换成国内的。例如更换成清华源:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple/
解决办法:
1.首先确定当前环境是否安装Django,一般出现该问题都是由于当前的环境未安装Django,确定是否安装命令为:
python3 -m django --version
2.创建虚拟环境,安装django相关软件
参考“2.1创建虚拟环境”章节内容
3.激活虚拟环境,在当前已安装相关软件的虚拟环境下启动应用
参考“5命令启动程序”章节内容
Check the above exception. To use one of the built-in backends, use 'django.db.backends.XXX', where XXX is one of:
'mysql', 'oracle', 'postgresql', 'sqlite3'"
解决办法:
这个问题是django_dmPthon与Django的版本不匹配。
按照上述的指定版本下载即可。比如:
Django 3.2
django-dmPython 3.1.7
解决办法:
按照网上的方法排查一通,比如,删除migrations相关的文件和表DJANGO_MIGRATIONS中的记录都没有解决,需要确定下 models.py文件中managed不等于False 。对于managed = False的模型,Django不会为其创建迁移文件。这是因为managed = False表示该模型不会被Django自动管理数据库表结构,而是由开发人员手动管理。
附件1
通过网盘分享的文件:dataWareHouse.zip
链接: https://pan.baidu.com/s/17Zl9yjc35U5HGKx2m7FV7w?pwd=peb9 提取码: peb9
注意:此下载链接有效期为一年,如下载链接过期,可留言给我。
文章
阅读量
获赞