基于Django平台对原有数据库迁移与整合的技术研究

2022-07-06 13:26陈军民
客联 2022年9期
关键词:数据整合信息化建设

陈军民

摘 要:高校信息化建设发展迅速,学校的业务部门根据各自的业务需求建立了很多信息管理系统。但由于没有统一规划,不可避免地出现了“信息孤岛”。本文针对高校信息化建设过程中,对不同数据库进行迁移与整合,建立统一的数据中心和网站应用的相关技术问题进行论述。

关键词:信息化建设;数据迁移;数据整合

一个单位在不同时段根据当时的工作需要,会建立各种不同的信息管理系统。由于历史的原因,这些系统的数据库平台不尽相同。如何对这些数据库进行迁移与整合,建立统一的数据中心和网站应用,这是一个单位信息化建设过程中必定会遇到且必须要解决的问题。本文以Django平台为例,介绍对原有不同数据库迁移和整合的技术问题。

一、Django平台连接多种不同的数据库

Django平台提供了非常便捷的方式连接各种不同的数据库。以某高校为例,教务管理系统应用的是MySQL数据库,智慧校园使用的是SQLite3的数据库。Django平台要同时连接这两种数据库,只要在setting.py文件中进行设置。

1、连接教务管理系统的MySQL数据库

DATABASES = {

'jwxt': {

'ENGINE': 'django.db.backends.mysql',

'NAME': 'jwxt',

'USER': ‘root,

'PASSWORD': ‘test123,

'HOST':192.168.0.10,

'PORT':3306,

}

}

其中,'jwxt'为Django平台连接教务管理系统数据库的连接名,'ENGINE':为连接mysql数据库的引擎,NAME为教务管理系统的数据库名称,USER为访问数据库的用户名,PASSWORD为访问数据库的密码,HOST为数据库服务器的IP地址,PORT为数据库服务器的端口。注意,上述数据为测试数据,在具体实践中应将这些数据设置为实际数据。

另外,Django平台访问MySQL,还需要安装包pymysql,并在与 settings.py 同级目录下的 init.py 中引入模块和进行配置,代码如下:

import pymysql

pymysql.install_as_MySQLdb()

2、连接智慧校园的SQLite3的数据库

DATABASES = {

'zhxy': {

'ENGINE': 'django.db.backends.sqlite3',

'NAME':‘192.168.0.11/DB/db.sqlite3,

}

}

其中,zhxy是Django平台连接智慧校园的数据库连接名,ENGINE是连接SQLite3数据库的连接引擎。NAME是Django平台连接智慧校园的数据库文件路径,需要对方电脑提供共享。

二、Django平台对原有数据库进行转换与迁移

Django平台提供了对数据库统一管理的后台,但有一个前提,那就是需要将原有的数据库转换为模型数据库。而要使用模型,首先要建一个APP,且在设置文件中注册这个App。

1、建立与注册App

首先执行:django-admin startapp DBApp ,建立DBApp,然后在settings.py中,找到INSTALLED_APPS,注册DBApp。注册代码如下:

INSTALLED_APPS = [

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'DBApp',

]

2、對原有数据库进行转换

原有的数据库是关系数据库,需要将其转换为模型数据库。首先执行命令:Python manage.py  inspectdb>ORM.txt,然后打开ORM.txt文件,就能得到模型数据库。

下面以MySQL的学生表为例。原有学生表的结构为:

CREATE TABLE `xs`  (

`学号` char(6) NOT NULL,

`姓名` char(8) NOT NULL,

`专业名` char(10)  NULL DEFAULT NULL,

`性别` tinyint(1) NOT NULL DEFAULT 1 ,

`出生时间` date NOT NULL,

`总学分` tinyint(1) NULL DEFAULT NULL,

`照片` blob NULL,

`备注` text NULL,

PRIMARY KEY (`学号`)

);

执行命令:python manage.py inspectdb xs>DBApp/models.py,打开models.py,可以看到以下模型代码:

class Xs(models.Model):

学号 = models.CharField(primary_key=True, max_length=6)

姓名 = models.CharField(max_length=8)

专业名 = models.CharField(max_length=10, blank=True, null=True)

性别 = models.TextField()  # This field type is a guess.

出生时间 = models.DateField()

总学分 = models.TextField(blank=True, null=True)  # This field type is a guess.

照片 = models.BinaryField(blank=True, null=True)

备注 = models.TextField(blank=True, null=True)

class Meta:

managed = False

db_table = 'xs'

注意,要管理这个数据表,需要将managed = False 改为managed = True。还有转换后的一些字段,不一定准确,后面出现:This field type is a guess,都需要人工检查,不符合要求的应进行修改。

最后执行:python manage.py migrate,对数据库的数据进行同步迁移。

三、Django平台的后台对数据库统一管理

Django平台提供了现成的后台对数据库统一管理,可以对现有的模型数据库进行增删改查。但要应用这些功能,首先应创建一个超级用户,然后再注册模型。

1、抢建一个超级用户

执行命令:python manage.py createsuperuser,设置用户名,密码和电子邮箱。

2、在DBApp.py文件中注册模型

From DBApp.models import Xs

Admin.site.register(Xs)

3、登录网站后台

执行命令 python manage.py runserver,在浏览器地址栏中输入:127.0.0.1/admin,输入超级用户名和密码,就可以进入网站后台对数据库进行管理。

参考文献:

[1]百度文库. https://wenku.baidu.com/view/f6f94f35a11614791711cc7931b765

ce05087abf.html_wkts_=1667285188879[OL].2021年3月

[2]錢彬. Python Web开发从入门到实践[M].清华大学出版社, 2020年7月

猜你喜欢
数据整合信息化建设
高等院校实验中心共享教学资源库建设研究与设计
数字化校园的整体构架及技术分析
事业单位人事管理信息化建设策略研究
企业财务管理信息化建设研究
基于数据挖掘的网络营销系统研究
无线传感器网络在农业中的应用
无线传感器网络在农业中的应用